Files
DjangoAdmin_Django_EleVue/.jenkins/Dockerfile
T
2026-09-11 14:35:23 +08:00

75 lines
2.2 KiB
Docker

# ============================================================
# 基础镜像参数
# ============================================================
ARG VAR_BASE_IMAGE
# ============================================================
# 阶段一:builder —— 负责编译依赖
# ============================================================
FROM ${VAR_BASE_IMAGE} AS builder
LABEL MAINTAINER="djangoadmin@126.com"
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1
# 安装编译所需工具链
RUN yum install -y yum-utils net-tools && \
yum install -y gcc gcc-c++ make cmake \
openssl-devel bzip2-devel libffi-devel mysql-devel && \
yum clean all && rm -rf /var/cache/yum
# 配置 pip 国内镜像源
RUN pip3 config set global.index-url http://mirrors.aliyun.com/pypi/simple && \
pip3 config set install.trusted-host mirrors.aliyun.com && \
python3 -m pip install --upgrade pip setuptools wheel
# 拷贝依赖清单
ARG VAR_PYFILE_PATH
WORKDIR /opt/apps
COPY ${VAR_PYFILE_PATH}/requirements.txt ./
# 将依赖安装到 /install 前缀,便于后续拷贝
RUN pip3 install --prefix=/install -r requirements.txt && \
pip3 install --prefix=/install uwsgi
# ============================================================
# 阶段二:runtime —— 只保留运行时内容
# ============================================================
FROM ${VAR_BASE_IMAGE} AS runtime
LABEL MAINTAINER="djangoadmin@126.com"
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1
# 运行期参数
ARG VAR_PROFILES
ARG VAR_PORT
ARG VAR_PYFILE
ARG VAR_PYFILE_PATH
ENV PORT=${VAR_PORT} \
PYFILE=${VAR_PYFILE} \
PROFILES=${VAR_PROFILES}
# 只安装运行期需要的动态库(不再需要 gcc/make/cmake 等)
RUN yum install -y net-tools openssl-devel bzip2-devel libffi-devel mysql-devel && \
yum clean all && rm -rf /var/cache/yum
# 从 builder 阶段拷贝已编译好的 Python 依赖
COPY --from=builder /install /usr/local
# 创建工作区
WORKDIR /opt/apps
# 拷贝项目源码
COPY ${VAR_PYFILE_PATH}/ ./
# 暴露端口
EXPOSE ${PORT}
# 启动
CMD ["sh", "-c", "python3 ${PYFILE}.py runserver 0.0.0.0:${PORT} --noreload"]