From 4f197a5ecbc1a69664090681dc11c9c7a235393d Mon Sep 17 00:00:00 2001 From: root Date: Sun, 5 Apr 2026 20:02:07 +0200 Subject: [PATCH] Fix: persist APP_KEY across redeploys via Docker env vars - Entrypoint now overrides .env with Docker environment variables - Supports all key vars: APP_KEY, APP_URL, DB_*, REDIS_* - Warns to save APP_KEY in Dokploy if auto-generated - Fixes DecryptException on proclamatori encrypted fields --- docker/php/entrypoint.sh | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/docker/php/entrypoint.sh b/docker/php/entrypoint.sh index 726cfb3..f5d4296 100755 --- a/docker/php/entrypoint.sh +++ b/docker/php/entrypoint.sh @@ -21,16 +21,50 @@ fi if [ ! -f .env ]; then echo "[*] Creating .env from .env.example..." cp .env.example .env -else - echo "[✓] .env file already exists." fi +# Override .env values with Docker environment variables (if set) +# This ensures Dokploy env vars take precedence +if [ -n "$APP_KEY" ]; then + sed -i "s|^APP_KEY=.*|APP_KEY=${APP_KEY}|" .env +fi +if [ -n "$APP_URL" ]; then + sed -i "s|^APP_URL=.*|APP_URL=${APP_URL}|" .env +fi +if [ -n "$DB_HOST" ]; then + sed -i "s|^DB_HOST=.*|DB_HOST=${DB_HOST}|" .env +fi +if [ -n "$DB_DATABASE" ]; then + sed -i "s|^DB_DATABASE=.*|DB_DATABASE=${DB_DATABASE}|" .env +fi +if [ -n "$DB_USERNAME" ]; then + sed -i "s|^DB_USERNAME=.*|DB_USERNAME=${DB_USERNAME}|" .env +fi +if [ -n "$DB_PASSWORD" ]; then + sed -i "s|^DB_PASSWORD=.*|DB_PASSWORD=${DB_PASSWORD}|" .env +fi +if [ -n "$REDIS_HOST" ]; then + sed -i "s|^REDIS_HOST=.*|REDIS_HOST=${REDIS_HOST}|" .env +fi +if [ -n "$REDIS_PASSWORD" ]; then + sed -i "s|^REDIS_PASSWORD=.*|REDIS_PASSWORD=${REDIS_PASSWORD}|" .env +fi +echo "[✓] .env file ready." + # ----------------------------------------------- # 3. Application key # ----------------------------------------------- if grep -q "^APP_KEY=$" .env; then echo "[*] Generating application key..." php artisan key:generate --ansi + echo "" + echo "╔══════════════════════════════════════════════════════╗" + echo "║ IMPORTANT: Save this APP_KEY in Dokploy env vars! ║" + echo "║ Otherwise encrypted data will be lost on redeploy. ║" + echo "╚══════════════════════════════════════════════════════╝" + echo "" + echo " APP_KEY=$(grep '^APP_KEY=' .env | cut -d= -f2-)" + echo "" else echo "[✓] Application key already set." fi