#!/bin/bash set -e # Run any necessary startup commands here, like migrations # Create the MailPilot user if it does not exist # Start Uvicorn with app module, host, and port from environment variables exec uvicorn app.main:fastapi_app --host 0.0.0.0 --port 5001 --reload DB_CHECK_INTERVAL=${DB_CHECK_INTERVAL:-5} DB_CHECK_RETRIES=${DB_CHECK_RETRIES:-120} pg_isready() { i=0 echo -n "waiting for database connection " while [ ${i} -le ${DB_CHECK_RETRIES} ]; do python pg_isready.py && return || echo -n "." sleep ${DB_CHECK_INTERVAL} let i++ done } ACTION="" if [ $# -ge 1 ]; then ACTION=${1} ; shift fi case "${ACTION}" in ''|-*) pg_isready exec uvicorn ${UVICORN_APP} ${ACTION} ${@} ;; uvicorn) pg_isready exec uvicorn ${UVICORN_APP} ${@} ;; migration) pg_isready exec alembic -c app/migrations/alembic.ini upgrade head ;; pytest) pg_isready exec pytest ${@} ;; noexit) # used locally for docker-based development # so things don't shut down after the process ends/exits. while sleep 1000; do :; done ;; *) exec ${ACTION} ${@} ;; esac