#!/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 # Session secret'ı .env dosyasına kaydet (persist) if [ ! -f "/app/backend/.env" ]; then mkdir -p /app/backend echo "SESSION_SECRET=$SESSION_SECRET" > /app/backend/.env 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=" /app/backend/.env; then sed -i "s|^SESSION_SECRET=.*|SESSION_SECRET=$SESSION_SECRET|" /app/backend/.env else echo "SESSION_SECRET=$SESSION_SECRET" >> /app/backend/.env 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 "$@"