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