; Supervisord configuration for the Monty runtime image. ; ; Runs three processes side-by-side inside the container: ; - nginx front door on :8080; / routes to Flask or Streamlit depending ; on MONTY_UI (vue → Flask, streamlit → Streamlit). Rendered by ; conf/nginx-entrypoint.py from conf/nginx.conf.template. ; - uwsgi Flask backend on 127.0.0.1:8000 (via uwsgi-start.sh + UWSGI_PORT) ; - streamlit Streamlit UI on 127.0.0.1:8501 ; ; supervisord runs as root so it can drop per-program privileges. nginx master ; needs root to read its private key files / bind reserved ports; workers drop ; to www-data. uwsgi-start.sh drops to the uwsgi user itself via --uid/--gid. [supervisord] nodaemon=true user=root logfile=/dev/stdout logfile_maxbytes=0 pidfile=/tmp/supervisord.pid [unix_http_server] file=/tmp/supervisor.sock chmod=0700 [supervisorctl] serverurl=unix:///tmp/supervisor.sock [rpcinterface:supervisor] supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface [program:nginx] command=/var/app/.venv/bin/python /etc/nginx-entrypoint.py autostart=true autorestart=true startretries=3 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:uwsgi] command=/var/app/uwsgi-start.sh directory=/var/app autostart=true autorestart=true startretries=3 environment=UWSGI_PORT="8000" stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:streamlit] command=/var/app/.venv/bin/python -m streamlit run /var/app/feed_status/ui/app.py directory=/var/app user=uwsgi autostart=true autorestart=true startretries=3 environment=MONTY_API_BASE_URL="http://127.0.0.1:8080",HOME="/tmp",STREAMLIT_CONFIG_DIR="/var/app/.streamlit" stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0