diff --git a/DOCKER.md b/DOCKER.md index b7f4ef758fb..546c0c73fe1 100644 --- a/DOCKER.md +++ b/DOCKER.md @@ -186,7 +186,7 @@ Build and run locally: ```bash docker build -f docker/Dockerfile -t prompts.chat . -docker run -p 4444:3000 -v prompts-data:/data prompts.chat +docker run --name prompts_library -p 4444:3000 -v prompts-data:/data prompts.chat ``` ## Health Check diff --git a/docker/Dockerfile b/docker/Dockerfile index 693398a9db4..163d31c0b30 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -31,7 +31,8 @@ RUN mkdir -p /data/postgres /data/app && chown -R postgres:postgres /data/postgr # Copy bootstrap scripts COPY docker/bootstrap.sh /bootstrap.sh COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf -RUN chmod +x /bootstrap.sh +# Fix Windows CRLF so /bootstrap.sh can run in Linux containers. +RUN sed -i 's/\r$//' /bootstrap.sh && chmod +x /bootstrap.sh # Environment defaults ENV NODE_ENV=production diff --git a/docker/bootstrap.sh b/docker/bootstrap.sh index 943afba3c26..93b9b28ed6a 100644 --- a/docker/bootstrap.sh +++ b/docker/bootstrap.sh @@ -149,7 +149,8 @@ fi # Wait for supervisord socket to be ready echo "▶ Waiting for supervisord..." for i in $(seq 1 30); do - if supervisorctl -c /etc/supervisor/conf.d/supervisord.conf status >/dev/null 2>&1; then + # nextjs starts later, so only check the postgres program here. + if supervisorctl -c /etc/supervisor/conf.d/supervisord.conf status postgresql | grep -q "RUNNING"; then echo "✓ Supervisord is ready" break fi @@ -164,12 +165,15 @@ done echo "▶ Starting Next.js..." supervisorctl -c /etc/supervisor/conf.d/supervisord.conf start nextjs +# Display host port first (for using in browser) when provided (for -p host:container mappings). +DISPLAY_PORT="${HOST_PORT:-${PORT:-80}}" + echo "" echo "╔═══════════════════════════════════════════════════════════════╗" echo "║ ║" echo "║ ✅ prompts.chat is running! ║" echo "║ ║" -echo "║ 🌐 Open http://localhost:${PORT:-80} in your browser ║" +echo "║ 🌐 Open http://localhost:${DISPLAY_PORT} in your browser ║" echo "║ ║" echo "╚═══════════════════════════════════════════════════════════════╝" echo "" diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 25d4fbf69e9..4eb0a581572 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -1,3 +1,8 @@ +# Local socket used by supervisorctl. +[unix_http_server] +file=/tmp/supervisor.sock +chmod=0700 + [supervisord] nodaemon=true user=root @@ -5,6 +10,14 @@ logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid childlogdir=/var/log/supervisor +# Required RPC interface for supervisorctl commands. +[rpcinterface:supervisor] +supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface + +# Tell supervisorctl where to connect. +[supervisorctl] +serverurl=unix:///tmp/supervisor.sock + [program:postgresql] command=/usr/lib/postgresql/15/bin/postgres -D /data/postgres user=postgres