|
|
|
|
# ======================
|
|
|
|
|
# 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-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
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
# ⭐ 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"]
|