feat(build): 添加 Dockerfile 配置支持容器化部署
- 配置 Maven 多模块项目构建环境 - 设置多阶段构建优化镜像大小 - 添加 JAR 包复制和清理逻辑 - 配置 Java 运行时参数和 GC 选项 - 设置开发环境默认配置文件 - 实现可执行 JAR 文件重命名机制
This commit is contained in:
parent
4e5c17d59f
commit
6be70e78c8
50
Dockerfile
Normal file
50
Dockerfile
Normal 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"]
|
||||||
Loading…
Reference in New Issue
Block a user