From 7142fe79d9dde5cf9ee61d28f7460fc06faf3596 Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 13 Jan 2026 15:40:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=20BuildKit=20?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=EF=BC=8C=E4=BD=BF=E7=94=A8=E4=BC=A0=E7=BB=9F?= =?UTF-8?q?=20Docker=20=E5=B1=82=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 BuildKit 语法和缓存挂载 - 使用传统 Docker 层缓存优化 - 优化 Dockerfile 层顺序(pom -> 依赖 -> 代码) - 仍然可以获得较好的缓存效果 --- Jenkinsfile | 4 ---- docker/Dockerfile.template | 16 +++++++--------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 475684e..576bb25 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -22,10 +22,6 @@ pipeline { // Docker Registry 配置 REGISTRY = 'localhost:5000' - // 启用 Docker BuildKit(加速构建) - DOCKER_BUILDKIT = '1' - BUILDKIT_PROGRESS = 'plain' - // Maven 配置 MAVEN_OPTS = '-Xmx2048m -Dmaven.repo.local=.m2/repository' diff --git a/docker/Dockerfile.template b/docker/Dockerfile.template index 071a8c8..d664f3e 100644 --- a/docker/Dockerfile.template +++ b/docker/Dockerfile.template @@ -2,7 +2,7 @@ # ============================================ # 多阶段构建:Maven 编译 + 运行时镜像 -# 使用 Docker BuildKit 缓存加速构建 +# 使用 Docker 层缓存加速构建 # ============================================ # ============ 构建阶段 ============ @@ -16,6 +16,7 @@ ARG JAR_NAME ARG SKIP_TESTS=true # 复制 pom 文件(利用 Docker 层缓存) +# 先复制 pom,再下载依赖,这样依赖层可以被缓存 COPY pom.xml . COPY viewsh-dependencies/pom.xml viewsh-dependencies/ COPY viewsh-framework/pom.xml viewsh-framework/ @@ -32,17 +33,14 @@ COPY viewsh-module-iot/viewsh-module-iot-api/pom.xml viewsh-module-iot/viewsh-mo COPY viewsh-module-iot/viewsh-module-iot-server/pom.xml viewsh-module-iot/viewsh-module-iot-server/ COPY viewsh-module-iot/viewsh-module-iot-gateway/pom.xml viewsh-module-iot/viewsh-module-iot-gateway/ -# 下载依赖(使用 BuildKit 缓存挂载) -# 缓存会保存在 Docker 的缓存卷中,不会包含在最终镜像里 -RUN --mount=type=cache,target=/root/.m2 \ - mvn dependency:go-offline -B -q || true +# 下载依赖(这一层会被缓存,除非 pom 文件变化) +RUN mvn dependency:go-offline -B -q || true -# 复制源代码 +# 复制源代码(代码变化不会影响依赖层的缓存) COPY . . -# 编译打包(使用 BuildKit 缓存挂载) -RUN --mount=type=cache,target=/root/.m2 \ - mvn clean package -pl ${MODULE_NAME} -am -DskipTests=${SKIP_TESTS} -B -q +# 编译打包 +RUN mvn clean package -pl ${MODULE_NAME} -am -DskipTests=${SKIP_TESTS} -B -q # ============ 运行阶段 ============ FROM eclipse-temurin:17-jre-alpine