Files
set50-system/deploy/entrypoint.sh

32 lines
1.0 KiB
Bash

#!/usr/bin/env sh
set -e
# Start the Flask backend on 0.0.0.0:5000 (bind all interfaces so nginx can
# proxy to it inside the container). DATA_DIR is /app/backend/data by default
# (a mounted volume makes it survive container recreate).
#
# NOTE: nginx owns port 80 (the inbound entrypoint EasyPanel exposes). We
# therefore pin Flask to 5000 explicitly and IGNORE the PORT env var — EasyPanel
# injects PORT=80, and if Flask also took 80 it would clash with nginx
# ("Address already in use"). nginx proxies /api -> 127.0.0.1:5000.
cd /app/backend
export HOST="${HOST:-0.0.0.0}"
export PORT="5000"
export PAPER_BIND_HOST="$HOST"
# pid1 helper: run nginx in foreground + Flask subprocess so the container
# stays alive and signals are handled. Keep it simple and robust.
# Start Flask in the background
python run.py &
FLASK_PID=$!
# Start nginx in the foreground (its own master + workers)
nginx -g "daemon off;" &
NGINX_PID=$!
# forward signals to both and wait
trap 'kill $FLASK_PID $NGINX_PID 2>/dev/null || true' INT TERM
wait $FLASK_PID
wait $NGINX_PID