#!/bin/bash # API 启动入口:先幂等执行数据库迁移,再启动传入的 CMD(默认 uvicorn) # 解决 watchtower 自动拉取新镜像后容器重启、未跑 alembic upgrade head 导致新列缺失 500 的问题(#2129) set -e cd /app echo "[entrypoint-api] Running alembic upgrade head..." if alembic upgrade head; then echo "[entrypoint-api] Migrations ok." else echo "[entrypoint-api] WARNING: alembic upgrade failed, continuing (existing columns should be fine)..." >&2 fi # 若有显式 CMD(CI 部署时 docker compose run --rm api sh -c '...' 传入),直接 exec 它 if [ "$#" -gt 0 ]; then echo "[entrypoint-api] Exec custom command: $*" exec "$@" fi echo "[entrypoint-api] Starting uvicorn..." exec uvicorn apps.api.main:app --host 0.0.0.0 --port 8000