z2api / deploy /Dockerfile
ZyphrZero
Initial commit
f0cacfe
raw
history blame
1.24 kB
# 多阶段构建 - 构建阶段
FROM python:3.11-slim as builder
# 安装构建依赖
RUN apt-get update && apt-get install -y \
gcc \
curl \
&& rm -rf /var/lib/apt/lists/*
# 设置虚拟环境
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
# 复制并安装依赖
COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# 运行阶段 - 更小的镜像
FROM python:3.11-slim
# 安装运行时依赖(curl用于健康检查)
RUN apt-get update && apt-get install -y \
curl \
&& rm -rf /var/lib/apt/lists/* && \
groupadd -r app && useradd -r -g app app
# 从构建阶段复制虚拟环境
COPY --from=builder /opt/venv /opt/venv
# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV PATH="/opt/venv/bin:$PATH"
# 创建工作目录并设置权限
WORKDIR /app
RUN chown app:app /app
USER app
# 复制应用代码
COPY --chown=app:app main.py .
COPY --chown=app:app test_api.py .
# 暴露端口
EXPOSE 8080
# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8080/v1/models || exit 1
# 启动命令
CMD ["python", "main.py"]