diff --git a/Dockerfile b/Dockerfile index 1c331fb..f9a3cd5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,26 +1,52 @@ # 使用 Python 3.10 作为基础镜像 +FROM python:3.10-slim as builder + +# 设置工作目录 +WORKDIR /app + +# 安装系统依赖和构建依赖 +RUN apt-get update && apt-get install -y \ + libgl1-mesa-glx \ + ca-certificates \ + build-essential \ + && rm -rf /var/lib/apt/lists/* + +# 复制项目文件 +COPY requirements.txt /app/ + +# 安装 Python 依赖 +RUN pip install --no-cache-dir --user -r requirements.txt + +# 第二阶段:运行阶段 FROM python:3.10-slim # 设置工作目录 WORKDIR /app -# 安装系统依赖 +# 安装运行时依赖 RUN apt-get update && apt-get install -y \ libgl1-mesa-glx \ - ca-certificates \ + ca-certificates \ && rm -rf /var/lib/apt/lists/* -# 复制项目文件 -COPY . /app/ +# 从构建阶段复制Python依赖 +COPY --from=builder /root/.local /root/.local -# 安装 Python 依赖 -RUN pip install --no-cache-dir -r requirements.txt +# 确保脚本路径在PATH中 +ENV PATH=/root/.local/bin:$PATH # 设置环境变量 ENV PYTHONPATH=/app -# 暴露端口(如果需要) +# 复制应用代码 +COPY . /app/ + +# 暴露端口 EXPOSE 8888 +# 健康检查 +HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ + CMD curl -f http://localhost:8888/config || exit 1 + # 启动命令 CMD ["python", "web_server.py"] \ No newline at end of file