From 6be70e78c83bb8536d138ef6cae11597046d2a6f Mon Sep 17 00:00:00 2001 From: lixiaolong <702156524@qq.com> Date: Sat, 16 May 2026 15:52:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(build):=20=E6=B7=BB=E5=8A=A0=20Dockerfile?= =?UTF-8?q?=20=E9=85=8D=E7=BD=AE=E6=94=AF=E6=8C=81=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E5=8C=96=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 配置 Maven 多模块项目构建环境 - 设置多阶段构建优化镜像大小 - 添加 JAR 包复制和清理逻辑 - 配置 Java 运行时参数和 GC 选项 - 设置开发环境默认配置文件 - 实现可执行 JAR 文件重命名机制 --- Dockerfile | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..79f1739 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,50 @@ +# ====================== 构建阶段 ====================== +FROM maven:3.9.9-eclipse-temurin-8 AS builder +WORKDIR /app + +# 缓存pom +COPY pom.xml . +COPY cmvr-iot-admin/pom.xml cmvr-iot-admin/ +COPY cmvr-iot-framework/pom.xml cmvr-iot-framework/ +COPY cmvr-iot-system/pom.xml cmvr-iot-system/ +COPY cmvr-iot-quartz/pom.xml cmvr-iot-quartz/ +COPY cmvr-iot-generator/pom.xml cmvr-iot-generator/ +COPY cmvr-iot-common/pom.xml cmvr-iot-common/ +COPY cmvr-iot-device/pom.xml cmvr-iot-device/ +COPY cmvr-iot-test/pom.xml cmvr-iot-test/ +COPY cmvr-iot-api/pom.xml cmvr-iot-api/ +COPY cmvr-iot-vi/pom.xml cmvr-iot-vi/ +COPY cmvr-iot-ti/pom.xml cmvr-iot-ti/ +COPY cmvr-iot-evaluation/pom.xml cmvr-iot-evaluation/ +COPY cmvr-iot-api/cmvr-iot-llm/pom.xml cmvr-iot-api/cmvr-iot-llm/ +COPY cmvr-iot-api/cmvr-iot-edge/pom.xml cmvr-iot-api/cmvr-iot-edge/ +COPY cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/pom.xml cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/ +COPY cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/pom.xml cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/ + +RUN mvn dependency:go-offline -B --no-transfer-progress + +COPY . . + +RUN mvn clean package -DskipTests -pl cmvr-iot-admin -am --no-transfer-progress + +# ====================== 运行阶段 ====================== +FROM openjdk:8-jdk-alpine + +WORKDIR /app + +# -------------------------- 【唯一正确写法】 -------------------------- +# 1. 先把所有jar复制进来 +COPY --from=builder /app/cmvr-iot-admin/target/*.jar ./ + +# 2. 自动删除不能运行的小jar(只保留可执行jar) +RUN find . -name "*.jar" -type f -size -20000k -delete + +# 3. 重命名为app.jar +RUN mv *.jar app.jar + +ENTRYPOINT ["java", "-jar", \ +"-Dspring.profiles.active=dev", \ +"-Djava.security.egd=file:/dev/./urandom", \ +"-XX:+UseG1GC", \ +"-Xms512m", "-Xmx1024m", \ +"app.jar"]