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
This commit is contained in:
root
2026-04-05 20:02:07 +02:00
parent 16616adcfd
commit 4f197a5ecb

View File

@@ -21,16 +21,50 @@ fi
if [ ! -f .env ]; then if [ ! -f .env ]; then
echo "[*] Creating .env from .env.example..." echo "[*] Creating .env from .env.example..."
cp .env.example .env cp .env.example .env
else
echo "[✓] .env file already exists."
fi 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 # 3. Application key
# ----------------------------------------------- # -----------------------------------------------
if grep -q "^APP_KEY=$" .env; then if grep -q "^APP_KEY=$" .env; then
echo "[*] Generating application key..." echo "[*] Generating application key..."
php artisan key:generate --ansi 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 else
echo "[✓] Application key already set." echo "[✓] Application key already set."
fi fi