fix: 移除 BuildKit 依赖,使用传统 Docker 层缓存
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

- 移除 BuildKit 语法和缓存挂载
- 使用传统 Docker 层缓存优化
- 优化 Dockerfile 层顺序(pom -> 依赖 -> 代码)
- 仍然可以获得较好的缓存效果
This commit is contained in:
lzh
2026-01-13 15:40:37 +08:00
parent 25fad8d6fd
commit 7142fe79d9
2 changed files with 7 additions and 13 deletions

4
Jenkinsfile vendored
View File

@@ -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'

View File

@@ -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