From d785e82369017504acd1c986cfac3966ae128b22 Mon Sep 17 00:00:00 2001 From: chenjiale Date: Thu, 4 Dec 2025 14:33:28 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=F0=9F=9B=A0=EF=B8=8F=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20Dockerfile=EF=BC=8C=E9=87=8D=E7=BB=84=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E9=98=B6=E6=AE=B5=EF=BC=8C=E7=A7=BB=E9=99=A4=E5=86=97?= =?UTF-8?q?=E4=BD=99=E5=AE=89=E8=A3=85=E6=AD=A5=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 144c955..c5f9cdd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,26 +1,36 @@ -FROM docker.io/python:3.10.16-slim +# ====================== +# Build Stage(含 gcc) +# ====================== +FROM python:3.10.16-slim AS builder RUN sed -i 's|deb.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/debian.sources \ && sed -i 's|security.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/debian.sources RUN apt-get update \ && apt-get install -y --no-install-recommends \ - gcc g++ unixodbc unixodbc-dev default-libmysqlclient-dev \ - || (sleep 3 && apt-get update && apt-get install -y --no-install-recommends \ - gcc g++ unixodbc unixodbc-dev default-libmysqlclient-dev) \ + gcc g++ unixodbc-dev default-libmysqlclient-dev \ && rm -rf /var/lib/apt/lists/* +WORKDIR /build +COPY requirements.txt . + +# 安装依赖到 /python_install +RUN pip install --no-cache-dir --prefix=/python_install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple + + +# ====================== +# Runtime Stage(无 gcc) +# ====================== +FROM python:3.10.16-slim + WORKDIR /app -COPY requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple +# 只复制依赖(已编译好) +COPY --from=builder /python_install /usr/local -# 🔥 只复制除 config.py 外的全部代码 +# 复制代码 COPY . . -# 🔥 再显式复制 config.py(此时一定是文件) -COPY config.py /app/config.py - RUN mkdir -p /opt/alert/model-lab \ && cp /app/config.py /opt/alert/model-lab/config.py