feat(build): 添加 Dockerfile 配置支持容器化部署

- 配置 Maven 多模块项目构建环境
- 设置多阶段构建优化镜像大小
- 添加 JAR 包复制和清理逻辑
- 配置 Java 运行时参数和 GC 选项
- 设置开发环境默认配置文件
- 实现可执行 JAR 文件重命名机制
This commit is contained in:
lixiaolong 2026-05-16 15:52:56 +08:00
parent 4e5c17d59f
commit 6be70e78c8

50
Dockerfile Normal file
View File

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