Detect external DB/Redis via flags; sanitize URLs

Improve entrypoint handling for external services and startup wrappers. entrypoint.sh now more robustly parses REDIS_URL (handles optional :password@host) and masks credentials when printing DATABASE_URL/REDIS_URL. It exports USE_EXTERNAL_POSTGRES and USE_EXTERNAL_REDIS so supervisor wrappers can decide behavior without re-parsing URLs. The temporary PostgreSQL shutdown was moved to after Prisma migrations and a warning was added when pushing schema to an external DB. postgres-start.sh and redis-start.sh were simplified to check the USE_EXTERNAL_* flags and sleep if an external service is configured. Also cleaned up formatting of the PostgreSQL ownership error message.
This commit is contained in:
kikootwo
2026-02-12 15:59:09 -05:00
parent a145dc9877
commit 6f0d71ee9b
3 changed files with 58 additions and 78 deletions
+5 -23
View File
@@ -1,10 +1,7 @@
#!/bin/bash
# PostgreSQL startup wrapper for unified container
# Smart supervisor: detects external PostgreSQL and sleeps instead of starting local instance
#
# Behavior:
# - If DATABASE_URL points to external host (not 127.0.0.1/localhost), sleep infinity
# - Otherwise, start local PostgreSQL instance
# Checks USE_EXTERNAL_POSTGRES flag (set by entrypoint) to decide whether
# to start the local instance or sleep to keep supervisord happy.
set -e
@@ -15,25 +12,10 @@ if [ -f /etc/environment ]; then
set +a
fi
echo "[PostgreSQL] Checking for external database configuration..."
# Extract host from DATABASE_URL
# Format: postgresql://user:pass@host:port/db
if [ -n "$DATABASE_URL" ]; then
# Extract the host part (between @ and :port or /)
DB_HOST=$(echo "$DATABASE_URL" | sed -n 's|.*@\([^:/]*\).*|\1|p')
echo "[PostgreSQL] Detected DATABASE_URL host: $DB_HOST"
# Check if host is external (not localhost or 127.0.0.1)
if [ "$DB_HOST" != "127.0.0.1" ] && [ "$DB_HOST" != "localhost" ]; then
echo "[PostgreSQL] ✅ External PostgreSQL detected at $DB_HOST"
echo "[PostgreSQL] Skipping local PostgreSQL startup - sleeping to keep supervisord happy"
exec sleep infinity
fi
if [ "$USE_EXTERNAL_POSTGRES" = "true" ]; then
echo "[PostgreSQL] External database configured - skipping local instance"
exec sleep infinity
fi
echo "[PostgreSQL] Starting local PostgreSQL server..."
# Start PostgreSQL as postgres user
exec /usr/lib/postgresql/16/bin/postgres -D /var/lib/postgresql/data