63 lines
1.4 KiB
Docker
63 lines
1.4 KiB
Docker
# DMS合规性测试工具 - FastAPI版本 Dockerfile
|
|
# 多阶段构建,优化镜像大小
|
|
|
|
# 第一阶段:构建阶段
|
|
FROM python:3.9-alpine AS builder
|
|
|
|
# 安装构建依赖
|
|
RUN apk update && \
|
|
apk add --no-cache \
|
|
gcc \
|
|
musl-dev \
|
|
linux-headers \
|
|
libffi-dev \
|
|
openssl-dev \
|
|
cargo \
|
|
rust && \
|
|
rm -rf /var/cache/apk/*
|
|
|
|
# 设置工作目录
|
|
WORKDIR /app
|
|
|
|
# 复制requirements并安装Python依赖
|
|
COPY requirements_fastapi.txt .
|
|
RUN pip install --upgrade pip setuptools wheel && \
|
|
pip install --no-cache-dir --user -r requirements_fastapi.txt
|
|
|
|
# 第二阶段:运行时镜像
|
|
FROM python:3.9-alpine
|
|
|
|
# 安装运行时依赖
|
|
RUN apk update && \
|
|
apk add --no-cache \
|
|
curl \
|
|
bash && \
|
|
rm -rf /var/cache/apk/*
|
|
|
|
# 从构建阶段复制Python包
|
|
COPY --from=builder /root/.local /root/.local
|
|
|
|
# 设置工作目录
|
|
WORKDIR /app
|
|
|
|
# 复制应用代码
|
|
COPY . .
|
|
|
|
# 创建必要目录
|
|
RUN mkdir -p /app/logs /app/test_reports /app/uploads
|
|
|
|
# 设置环境变量
|
|
ENV PATH=/root/.local/bin:$PATH
|
|
ENV PYTHONPATH=/app
|
|
ENV PYTHONUNBUFFERED=1
|
|
|
|
# 暴露端口
|
|
EXPOSE 5050
|
|
|
|
# 健康检查
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
|
|
CMD curl -f http://localhost:5050/ || exit 1
|
|
|
|
# 启动FastAPI服务器
|
|
CMD ["python3", "fastapi_server.py", "--host", "0.0.0.0", "--port", "5050"]
|