Files
balikci/docker-entrypoint.sh

116 lines
4.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
set -e
# Docker Entrypoint Script - Single Container (Backend + Frontend)
# Otomatik SESSION_SECRET oluşturma ve yönetimi
echo "🚀 Oltalama başlatılıyor (Backend + Frontend)..."
# SESSION_SECRET kontrolü ve otomatik oluşturma
if [ -z "$SESSION_SECRET" ] || [ "$SESSION_SECRET" = "change-this-to-a-very-strong-random-secret" ]; then
echo "⚠️ SESSION_SECRET boş veya varsayılan değerde!"
# .env dosyası varsa SESSION_SECRET'ı oradan al
if [ -f "/app/backend/.env" ]; then
SESSION_SECRET_FROM_FILE=$(grep "^SESSION_SECRET=" /app/backend/.env | cut -d'=' -f2-)
if [ -n "$SESSION_SECRET_FROM_FILE" ] && [ "$SESSION_SECRET_FROM_FILE" != "change-this-to-a-very-strong-random-secret" ]; then
export SESSION_SECRET="$SESSION_SECRET_FROM_FILE"
echo "✅ SESSION_SECRET .env dosyasından yüklendi"
fi
fi
# Hala boşsa otomatik oluştur
if [ -z "$SESSION_SECRET" ] || [ "$SESSION_SECRET" = "change-this-to-a-very-strong-random-secret" ]; then
echo "🔑 Yeni SESSION_SECRET otomatik oluşturuluyor..."
# Node.js ile güçlü random secret oluştur
SESSION_SECRET=$(node -e "console.log(require('crypto').randomBytes(64).toString('hex'))")
export SESSION_SECRET
# .env dosyası yolu
ENV_FILE="/app/backend/.env"
# Eğer .env bir dizin ise (bind mount sorunu), sil ve dosya olarak oluştur
if [ -d "$ENV_FILE" ]; then
echo "⚠️ .env bir dizin olarak tespit edildi, düzeltiliyor..."
rm -rf "$ENV_FILE"
fi
# .env dizinini oluştur (yoksa)
mkdir -p "$(dirname "$ENV_FILE")"
# Session secret'ı .env dosyasına kaydet (persist)
if [ ! -f "$ENV_FILE" ]; then
echo "SESSION_SECRET=$SESSION_SECRET" > "$ENV_FILE"
echo "✅ Yeni SESSION_SECRET oluşturuldu ve .env dosyasına kaydedildi"
echo "📝 SESSION_SECRET: ${SESSION_SECRET:0:20}... (ilk 20 karakter)"
else
# Mevcut .env dosyasını güncelle
if grep -q "^SESSION_SECRET=" "$ENV_FILE"; then
sed -i "s|^SESSION_SECRET=.*|SESSION_SECRET=$SESSION_SECRET|" "$ENV_FILE"
else
echo "SESSION_SECRET=$SESSION_SECRET" >> "$ENV_FILE"
fi
echo "✅ SESSION_SECRET güncellendi ve .env dosyasına kaydedildi"
fi
fi
else
echo "✅ SESSION_SECRET zaten ayarlanmış"
fi
# Database dizinini kontrol et
if [ ! -d "/app/backend/database" ]; then
echo "📁 Database dizini oluşturuluyor..."
mkdir -p /app/backend/database
fi
# Logs dizinini kontrol et
if [ ! -d "/app/backend/logs" ]; then
echo "📁 Logs dizini oluşturuluyor..."
mkdir -p /app/backend/logs
fi
# Database migration'ları çalıştır (ilk kurulumda)
if [ ! -f "/app/backend/database/oltalama.db" ]; then
echo "🗄️ İlk kurulum tespit edildi, database oluşturuluyor..."
cd /app/backend
if [ -f "migrations/run-migrations.js" ]; then
node migrations/run-migrations.js || echo "⚠️ Migration hatası (normal olabilir)"
fi
# Seed data (opsiyonel)
if [ "${AUTO_SEED}" = "true" ] && [ -f "seeders/run-seeders.js" ]; then
echo "🌱 Seed data ekleniyor..."
node seeders/run-seeders.js || echo "⚠️ Seeding hatası (normal olabilir)"
fi
else
echo "✅ Database mevcut, migration atlanıyor"
fi
# Frontend dist kontrolü
if [ -d "/app/frontend/dist" ]; then
echo "✅ Frontend dist bulundu: /app/frontend/dist"
echo " Dosya sayısı: $(find /app/frontend/dist -type f | wc -l)"
if [ -f "/app/frontend/dist/index.html" ]; then
echo " ✅ index.html mevcut"
else
echo " ⚠️ index.html bulunamadı!"
fi
else
echo "⚠️ Frontend dist bulunamadı: /app/frontend/dist"
fi
# Backend dosyaları kontrolü
if [ -f "/app/backend/src/app.js" ]; then
echo "✅ Backend app.js bulundu"
else
echo "⚠️ Backend app.js bulunamadı!"
fi
echo "✅ Oltalama hazır, uygulama başlatılıyor..."
echo ""
# CMD komutunu çalıştır (exec ile PID 1'e geç)
exec "$@"