FROM python:3.11-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 # 系统依赖:curl 用于健康检查,default-mysql-client 提供 mysqldump,tar 已内置 RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ default-mysql-client \ tar \ gzip \ tzdata \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # 先安装依赖以利用 Docker 缓存 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . # 数据、日志、备份目录 RUN mkdir -p /app/data/backups /app/logs EXPOSE 8000 # alembic 升级 + 启动 uvicorn CMD ["sh", "-c", "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000"]