变更内容: - 在 `Dockerfile` 中指定 `--platform=linux/amd64`,确保跨平台兼容性。 - 在 `docker-compose.yml` 中新增镜像配置及平台设置,贴合部署需求。 - 优化服务配置以匹配目标环境。
44 lines
1.1 KiB
Docker
44 lines
1.1 KiB
Docker
FROM --platform=linux/amd64 python:3.11-slim
|
||
|
||
WORKDIR /app
|
||
|
||
# 安装系统依赖
|
||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||
gcc \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# 复制依赖文件
|
||
COPY requirements.txt .
|
||
COPY requirements-dev.txt .
|
||
|
||
# 安装 Python 依赖
|
||
RUN pip install --no-cache-dir -r requirements.txt
|
||
RUN pip install --no-cache-dir -r requirements-dev.txt
|
||
|
||
# 复制应用代码和配置
|
||
COPY src/ ./src/
|
||
COPY config/ ./config/
|
||
COPY pyproject.toml .
|
||
|
||
# 安装包(使用 editable 模式)
|
||
RUN pip install --no-cache-dir -e .
|
||
|
||
# 创建非 root 用户
|
||
RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app
|
||
USER appuser
|
||
|
||
# 暴露端口
|
||
EXPOSE 8000
|
||
|
||
# 运行模式:api(默认)或 worker
|
||
ENV RUN_MODE=api
|
||
|
||
# 健康检查(仅对 API 模式有效)
|
||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||
CMD if [ "$RUN_MODE" = "api" ]; then python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/healthz')"; else exit 0; fi
|
||
|
||
# 启动脚本
|
||
COPY --chown=appuser:appuser deployment/entrypoint.sh /app/entrypoint.sh
|
||
RUN chmod +x /app/entrypoint.sh
|
||
|
||
CMD ["/app/entrypoint.sh"] |