This commit is contained in:
2026-09-12 01:39:39 +08:00
parent 9912bdbed3
commit ff0ec5c15e
+11 -10
View File
@@ -8,10 +8,10 @@
# 通过 --build-arg 动态注入以下变量,便于在 CI 中复用同一份 Dockerfile: # 通过 --build-arg 动态注入以下变量,便于在 CI 中复用同一份 Dockerfile:
# VAR_BASE_IMAGE 基础镜像(如 python:3.12-slim、自定义的带 esxi 用户的镜像) # VAR_BASE_IMAGE 基础镜像(如 python:3.12-slim、自定义的带 esxi 用户的镜像)
# VAR_PYTHON_PREFIX Python 安装前缀(依赖安装位置) # VAR_PYTHON_PREFIX Python 安装前缀(依赖安装位置)
# VAR_JARFILE_PATH 项目源码目录(相对构建上下文) # VAR_PYFILE_PATH 项目源码目录(相对构建上下文)
# VAR_PROFILES 应用 profile(dev / prod ...) # VAR_PROFILES 应用 profile(dev / prod ...)
# VAR_PORT 应用监听端口 # VAR_PORT 应用监听端口
# VAR_JARFILE 启动入口文件名(不含 .py) # VAR_PYFILE 启动入口文件名(不含 .py)
# ============================================================ # ============================================================
# ------------------------------------------------------------ # ------------------------------------------------------------
@@ -62,6 +62,7 @@ RUN yum install -y yum-utils net-tools && \
openssl-devel bzip2-devel libffi-devel \ openssl-devel bzip2-devel libffi-devel \
mariadb-devel pkgconf-pkg-config && \ mariadb-devel pkgconf-pkg-config && \
yum clean all && rm -rf /var/cache/yum yum clean all && rm -rf /var/cache/yum
#RUN --mount=type=cache,target=/var/cache/dnf,sharing=locked,id=dnf-cache \ #RUN --mount=type=cache,target=/var/cache/dnf,sharing=locked,id=dnf-cache \
# dnf install -y yum-utils net-tools && \ # dnf install -y yum-utils net-tools && \
# dnf install -y gcc gcc-c++ make cmake \ # dnf install -y gcc gcc-c++ make cmake \
@@ -81,9 +82,9 @@ RUN pip3 config set global.index-url http://mirrors.aliyun.com/pypi/simple && \
# 只拷贝 requirements.txt 而不是整个项目, # 只拷贝 requirements.txt 而不是整个项目,
# 这样源码变化但 requirements 未变时可以复用 pip install 层缓存 # 这样源码变化但 requirements 未变时可以复用 pip install 层缓存
# ------------------------------------------------------------ # ------------------------------------------------------------
ARG VAR_JARFILE_PATH ARG VAR_PYFILE_PATH
WORKDIR /opt/apps WORKDIR /opt/apps
COPY ${VAR_JARFILE_PATH}/requirements.txt ./ COPY ${VAR_PYFILE_PATH}/requirements.txt ./
# ------------------------------------------------------------ # ------------------------------------------------------------
# 将依赖安装到 Python 的 prefix 下 # 将依赖安装到 Python 的 prefix 下
@@ -119,14 +120,14 @@ ENV PYTHONUNBUFFERED=1 \
# VAR_PYTHON_PREFIX Python 前缀(必须与 builder 保持一致) # VAR_PYTHON_PREFIX Python 前缀(必须与 builder 保持一致)
# VAR_PROFILES 配置 profile(dev / prod) # VAR_PROFILES 配置 profile(dev / prod)
# VAR_PORT 应用监听端口 # VAR_PORT 应用监听端口
# VAR_JARFILE 启动入口文件名(不含 .py) # VAR_PYFILE 启动入口文件名(不含 .py)
# VAR_JARFILE_PATH 项目源码目录 # VAR_PYFILE_PATH 项目源码目录
# ------------------------------------------------------------ # ------------------------------------------------------------
ARG VAR_PYTHON_PREFIX=/usr/local/python3.12.8 ARG VAR_PYTHON_PREFIX=/usr/local/python3.12.8
ARG VAR_PROFILES ARG VAR_PROFILES
ARG VAR_PORT ARG VAR_PORT
ARG VAR_JARFILE ARG VAR_PYFILE
ARG VAR_JARFILE_PATH ARG VAR_PYFILE_PATH
# ------------------------------------------------------------ # ------------------------------------------------------------
# 将 ARG 转成 ENV,运行期可通过环境变量读取 # 将 ARG 转成 ENV,运行期可通过环境变量读取
@@ -135,7 +136,7 @@ ARG VAR_JARFILE_PATH
# PROFILES 应用读取的 profile # PROFILES 应用读取的 profile
# ------------------------------------------------------------ # ------------------------------------------------------------
ENV PORT=${VAR_PORT} \ ENV PORT=${VAR_PORT} \
PYFILE=${VAR_JARFILE} \ PYFILE=${VAR_PYFILE} \
PROFILES=${VAR_PROFILES} PROFILES=${VAR_PROFILES}
# ------------------------------------------------------------ # ------------------------------------------------------------
@@ -167,7 +168,7 @@ WORKDIR /opt/apps
# 拷贝项目源码 # 拷贝项目源码
# 建议配合 .dockerignore 排除 .git、__pycache__、本地虚拟环境等 # 建议配合 .dockerignore 排除 .git、__pycache__、本地虚拟环境等
# ------------------------------------------------------------ # ------------------------------------------------------------
COPY ${VAR_JARFILE_PATH}/ ./ COPY ${VAR_PYFILE_PATH}/ ./
# ------------------------------------------------------------ # ------------------------------------------------------------
# 一次性修正属主: # 一次性修正属主: