Files
balikci/backend/docker-entrypoint.sh

94 lines
3.7 KiB
Bash
Raw Normal View History

2025-11-11 04:36:35 +03:00
#!/bin/sh
set -e
# Docker Entrypoint Script - Backend
# Otomatik SESSION_SECRET oluşturma ve yönetimi
echo "🚀 Oltalama Backend başlatılıyor..."
# 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/.env" ]; then
SESSION_SECRET_FROM_FILE=$(grep "^SESSION_SECRET=" /app/.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 07:04:23 +03:00
# .env dosyası yolu
ENV_FILE="/app/.env"
# Eğer .env bir dizin ise (bind mount sorunu), bind mount'u atla
# Sadece environment variable olarak kullan
if [ -d "$ENV_FILE" ]; then
echo "⚠️ .env bir dizin olarak tespit edildi (bind mount sorunu)"
echo "⚠️ SESSION_SECRET sadece environment variable olarak kullanılacak"
2025-11-11 04:36:35 +03:00
echo "📝 SESSION_SECRET: ${SESSION_SECRET:0:20}... (ilk 20 karakter)"
2025-11-11 07:04:23 +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 04:36:35 +03:00
# Mevcut .env dosyasını güncelle
2025-11-11 07:04:23 +03:00
if grep -q "^SESSION_SECRET=" "$ENV_FILE"; then
sed -i "s|^SESSION_SECRET=.*|SESSION_SECRET=$SESSION_SECRET|" "$ENV_FILE"
2025-11-11 04:36:35 +03:00
else
2025-11-11 07:04:23 +03:00
echo "SESSION_SECRET=$SESSION_SECRET" >> "$ENV_FILE"
2025-11-11 04:36:35 +03:00
fi
echo "✅ SESSION_SECRET güncellendi ve .env dosyasına kaydedildi"
2025-11-11 07:04:23 +03:00
echo "📝 SESSION_SECRET: ${SESSION_SECRET:0:20}... (ilk 20 karakter)"
else
# .env dosyası yok, oluştur
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 04:36:35 +03:00
fi
fi
else
echo "✅ SESSION_SECRET zaten ayarlanmış"
fi
# Database dizinini kontrol et
if [ ! -d "/app/database" ]; then
echo "📁 Database dizini oluşturuluyor..."
mkdir -p /app/database
fi
# Logs dizinini kontrol et
if [ ! -d "/app/logs" ]; then
echo "📁 Logs dizini oluşturuluyor..."
mkdir -p /app/logs
fi
# Database migration'ları çalıştır (ilk kurulumda)
if [ ! -f "/app/database/oltalama.db" ]; then
echo "🗄️ İlk kurulum tespit edildi, database oluşturuluyor..."
if [ -f "/app/migrations/run-migrations.js" ]; then
node /app/migrations/run-migrations.js || echo "⚠️ Migration hatası (normal olabilir)"
fi
# Seed data (opsiyonel)
if [ "${AUTO_SEED}" = "true" ] && [ -f "/app/seeders/run-seeders.js" ]; then
echo "🌱 Seed data ekleniyor..."
node /app/seeders/run-seeders.js || echo "⚠️ Seeding hatası (normal olabilir)"
fi
else
echo "✅ Database mevcut, migration atlanıyor"
fi
echo "✅ Backend hazır, uygulama başlatılıyor..."
echo ""
# CMD komutunu çalıştır (exec ile PID 1'e geç)
exec "$@"