# ====================== # Build Stage(含 gcc) # ====================== FROM python:3.10.16-slim AS builder # 使用清华源(Debian 12 Bookworm) RUN printf "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware\n\ deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware\n\ deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware\n" \ > /etc/apt/sources.list RUN apt-get update \ && apt-get install -y --no-install-recommends \ gcc g++ unixodbc-dev default-libmysqlclient-dev \ && rm -rf /var/lib/apt/lists/* WORKDIR /build COPY requirements.txt . 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 # 使用清华源(HTTPS) RUN printf "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware\n\ deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware\n\ deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware\n" \ > /etc/apt/sources.list # pyodbc 必须安装 libodbc1(提供 libodbc.so.2) RUN apt-get update \ && apt-get install -y --no-install-recommends \ libodbc1 unixodbc \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # 复制已编译好的依赖 COPY --from=builder /python_install /usr/local # 复制代码 COPY . . RUN mkdir -p /opt/alert/model-lab \ && cp /app/config.py /opt/alert/model-lab/config.py CMD ["python", "app.py"]