- 配置 Maven 多模块项目构建环境 - 设置多阶段构建优化镜像大小 - 添加 JAR 包复制和清理逻辑 - 配置 Java 运行时参数和 GC 选项 - 设置开发环境默认配置文件 - 实现可执行 JAR 文件重命名机制
51 lines
1.8 KiB
Docker
51 lines
1.8 KiB
Docker
# ====================== 构建阶段 ======================
|
||
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"]
|