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