32 lines
1.0 KiB
Bash
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
|