2025-11-11 05:33:46 +03:00
|
|
|
|
#!/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
|
|
|
|
|
|
|
2025-11-11 05:51:07 +03:00
|
|
|
|
# .env dosyası yolu
|
|
|
|
|
|
ENV_FILE="/app/backend/.env"
|
|
|
|
|
|
|
2025-11-11 05:54:31 +03:00
|
|
|
|
# Eğer .env bir dizin ise (bind mount sorunu), bind mount'u atla
|
|
|
|
|
|
# Sadece environment variable olarak kullan
|
2025-11-11 05:51:07 +03:00
|
|
|
|
if [ -d "$ENV_FILE" ]; then
|
2025-11-11 05:54:31 +03:00
|
|
|
|
echo "⚠️ .env bir dizin olarak tespit edildi (bind mount sorunu)"
|
|
|
|
|
|
echo "⚠️ SESSION_SECRET sadece environment variable olarak kullanılacak"
|
2025-11-11 05:33:46 +03:00
|
|
|
|
echo "📝 SESSION_SECRET: ${SESSION_SECRET:0:20}... (ilk 20 karakter)"
|
2025-11-11 05:54:31 +03:00
|
|
|
|
echo "💡 İpucu: Host'ta .env dosyası oluşturun veya docker-compose.yml'de SESSION_SECRET environment variable'ı kullanın"
|
|
|
|
|
|
elif [ -f "$ENV_FILE" ]; then
|
2025-11-11 05:33:46 +03:00
|
|
|
|
# Mevcut .env dosyasını güncelle
|
2025-11-11 05:51:07 +03:00
|
|
|
|
if grep -q "^SESSION_SECRET=" "$ENV_FILE"; then
|
|
|
|
|
|
sed -i "s|^SESSION_SECRET=.*|SESSION_SECRET=$SESSION_SECRET|" "$ENV_FILE"
|
2025-11-11 05:33:46 +03:00
|
|
|
|
else
|
2025-11-11 05:51:07 +03:00
|
|
|
|
echo "SESSION_SECRET=$SESSION_SECRET" >> "$ENV_FILE"
|
2025-11-11 05:33:46 +03:00
|
|
|
|
fi
|
|
|
|
|
|
echo "✅ SESSION_SECRET güncellendi ve .env dosyasına kaydedildi"
|
2025-11-11 05:54:31 +03:00
|
|
|
|
echo "📝 SESSION_SECRET: ${SESSION_SECRET:0:20}... (ilk 20 karakter)"
|
|
|
|
|
|
else
|
|
|
|
|
|
# .env dosyası yok, oluştur
|
|
|
|
|
|
mkdir -p "$(dirname "$ENV_FILE")"
|
|
|
|
|
|
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)"
|
2025-11-11 05:33:46 +03:00
|
|
|
|
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
|
|
|
|
|
|
|
2025-11-11 05:46:09 +03:00
|
|
|
|
# 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
|
|
|
|
|
|
|
2025-11-11 05:33:46 +03:00
|
|
|
|
echo "✅ Oltalama hazır, uygulama başlatılıyor..."
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
|
|
# CMD komutunu çalıştır (exec ile PID 1'e geç)
|
|
|
|
|
|
exec "$@"
|
|
|
|
|
|
|