Files
balikci/backend/docker-entrypoint.sh
salvacybersec 05bb2fc55c setup script
2025-11-11 04:36:35 +03:00

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