From 787fd670f1b1637d0a892a10aa5a5cfc7f974d98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=9A=82=E8=9A=81=E4=BA=91?= Date: Fri, 11 Sep 2026 14:35:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0Dockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .jenkins/Dockerfile | 95 ++++++++++++++++++++++++++------------------- README.md | 2 - 2 files changed, 55 insertions(+), 42 deletions(-) diff --git a/.jenkins/Dockerfile b/.jenkins/Dockerfile index e84d5eb..bd5f9bb 100644 --- a/.jenkins/Dockerfile +++ b/.jenkins/Dockerfile @@ -1,60 +1,75 @@ -# 基础镜像地址 +# ============================================================ +# 基础镜像参数 +# ============================================================ ARG VAR_BASE_IMAGE -# 基础镜像 -FROM ${VAR_BASE_IMAGE} -# 镜像作者 -LABEL MAINTAINER="djangoadmin@163.com" +# ============================================================ +# 阶段一:builder —— 负责编译依赖 +# ============================================================ +FROM ${VAR_BASE_IMAGE} AS builder -# 设置 python 环境变量 -ENV PYTHONUNBUFFERED 1 -ENV PYTHONDONTWRITEBYTECODE 1 +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} -# 设置文件包名 -ENV PYFILE=${VAR_PYFILE} -# 设置环境变量 -ENV PROFILES=${VAR_PROFILES} +ENV PORT=${VAR_PORT} \ + PYFILE=${VAR_PYFILE} \ + PROFILES=${VAR_PROFILES} -# 安装必要的软件包 -RUN yum install -y yum-utils net-tools && \ - yum install -y gcc gcc-c++ make cmake openssl-devel bzip2-devel libffi-devel mysql-devel +# 只安装运行期需要的动态库(不再需要 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 -# 更新pip -RUN pip3 install -U pip -# 设置国内镜像源 -RUN pip3 config set global.index-url http://mirrors.aliyun.com/pypi/simple -RUN pip3 config set install.trusted-host mirrors.aliyun.com -# 升级pip版本 -RUN python3 -m pip install --upgrade pip -# 安装工具 -RUN pip3 install --upgrade setuptools wheel -RUN pip3 install ez_setup +# 从 builder 阶段拷贝已编译好的 Python 依赖 +COPY --from=builder /install /usr/local # 创建工作区 -RUN mkdir -p /opt/apps -# 设置工作区 WORKDIR /opt/apps -# 拷贝文件 -COPY ${VAR_PYFILE_PATH} ./ - -# 安装依赖 -RUN pip install -r requirements.txt -RUN pip install uwsgi +# 拷贝项目源码 +COPY ${VAR_PYFILE_PATH}/ ./ # 暴露端口 EXPOSE ${PORT} -# 执行启动项目 +# 启动 CMD ["sh", "-c", "python3 ${PYFILE}.py runserver 0.0.0.0:${PORT} --noreload"] \ No newline at end of file diff --git a/README.md b/README.md index 8376df9..fa0702b 100644 --- a/README.md +++ b/README.md @@ -68,8 +68,6 @@ DjangoAdmin 数据中台解决方案是一套面向企业级应用场景的一 ## 📁 项目结构 -## 📁 项目结构 - ``` ├── application/ # Django 后端应用目录 │ ├── generator/ # 代码生成器 Web 端