From 3c01dc63a4afa2958f2ae0d77dd7f062e29068ee Mon Sep 17 00:00:00 2001 From: salvacybersec Date: Tue, 11 Nov 2025 05:54:31 +0300 Subject: [PATCH] Fix: Remove .env bind mount to prevent directory mount issue, use env var instead --- docker-compose.single.yml | 6 +++--- docker-entrypoint.sh | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docker-compose.single.yml b/docker-compose.single.yml index 49dbff6..7336870 100644 --- a/docker-compose.single.yml +++ b/docker-compose.single.yml @@ -30,10 +30,10 @@ services: # Logs persistence - oltalama-logs:/app/backend/logs # .env file (optional bind mount - host'tan container'a) - # Eğer host'ta .env yoksa, entrypoint script container içinde oluşturur # NOT: Host'ta .env dosyası yoksa, Docker onu dizin olarak oluşturabilir - # Entrypoint script bunu otomatik düzeltir - - ./backend/.env:/app/backend/.env:rw + # Bu durumda SESSION_SECRET sadece environment variable olarak kullanılır + # Alternatif: SESSION_SECRET'ı doğrudan environment variable olarak geçin + # - ./backend/.env:/app/backend/.env:rw healthcheck: test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"] interval: 30s diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index d9d27a8..64668ec 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -30,21 +30,14 @@ if [ -z "$SESSION_SECRET" ] || [ "$SESSION_SECRET" = "change-this-to-a-very-stro # .env dosyası yolu ENV_FILE="/app/backend/.env" - # Eğer .env bir dizin ise (bind mount sorunu), sil ve dosya olarak oluştur + # 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, 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 "⚠️ .env bir dizin olarak tespit edildi (bind mount sorunu)" + echo "⚠️ SESSION_SECRET sadece environment variable olarak kullanılacak" echo "📝 SESSION_SECRET: ${SESSION_SECRET:0:20}... (ilk 20 karakter)" - else + echo "💡 İpucu: Host'ta .env dosyası oluşturun veya docker-compose.yml'de SESSION_SECRET environment variable'ı kullanın" + elif [ -f "$ENV_FILE" ]; then # 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" @@ -52,6 +45,13 @@ if [ -z "$SESSION_SECRET" ] || [ "$SESSION_SECRET" = "change-this-to-a-very-stro echo "SESSION_SECRET=$SESSION_SECRET" >> "$ENV_FILE" fi echo "✅ SESSION_SECRET güncellendi ve .env dosyasına kaydedildi" + 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)" fi fi else