#!/bin/sh set -e echo "[entrypoint] Warte auf Datenbank ${DB_HOST}:${DB_PORT} ..." python -m app.wait_for_db echo "[entrypoint] Migrationen einspielen ..." alembic upgrade head # --reload nur beim Entwickeln. Im Dauerbetrieb bringt es einen # zusaetzlichen Ueberwachungsprozess, dauerndes Absuchen des # Dateisystems - und es setzt voraus, dass der Quelltext ueber ein # Bind-Mount hereinkommt statt aus dem gebauten Abbild. if [ "${DEV_RELOAD:-false}" = "true" ]; then echo "[entrypoint] Starte API im Entwicklungsmodus (--reload)." RELOAD_ARG="--reload" else echo "[entrypoint] Starte API." RELOAD_ARG="" fi # --proxy-headers: X-Forwarded-For auswerten, damit das Rate Limiting # die echte Client-IP sieht und nicht die des nginx-Containers. # --forwarded-allow-ips: nur diesen Absendern glauben. Der Wert ist # unkritisch, solange der api-Container KEINEN oeffentlichen Port hat. exec uvicorn app.main:app \ --host 0.0.0.0 --port 8000 \ --proxy-headers --forwarded-allow-ips "${FORWARDED_ALLOW_IPS:-*}" \ ${RELOAD_ARG}