Files
einkaufsapp/backend/entrypoint.sh

30 lines
1.0 KiB
Bash

#!/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}