# 第一阶段:使用Maven构建项目 FROM maven:3.8.7-openjdk-17 AS builder # 设置工作目录 WORKDIR /workspace # 复制所有POM文件以利用Docker缓存层 COPY pom.xml . COPY aircraft-common/pom.xml ./aircraft-common/ COPY aircraft-generator/pom.xml ./aircraft-generator/ COPY aircraft-logging/pom.xml ./aircraft-logging/ COPY aircraft-system/pom.xml ./aircraft-system/ COPY aircraft-tools/pom.xml ./aircraft-tools/ # 下载依赖项(仅当pom文件更改时才会重新执行) RUN mvn -B dependency:go-offline # 复制源代码 COPY aircraft-common/src ./aircraft-common/src COPY aircraft-generator/src ./aircraft-generator/src COPY aircraft-logging/src ./aircraft-logging/src COPY aircraft-system/src ./aircraft-system/src COPY aircraft-tools/src ./aircraft-tools/src # 构建整个项目并跳过测试 RUN mvn -B package -pl aircraft-system -am -DskipTests # 第二阶段:创建运行时镜像 FROM eclipse-temurin:17-jre-alpine # 设置元数据 LABEL maintainer="aircraft-team" LABEL module="aircraft-system" # 设置工作目录 WORKDIR /app # 从构建阶段复制生成的JAR文件 COPY --from=builder /workspace/aircraft-system/target/*.jar app.jar # 设置时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 暴露默认端口 EXPOSE 8000 # 设置JVM参数 ENV JAVA_OPTS="-Xmx512m -Xms256m -XX:+UseG1GC -XX:MaxGCPauseMillis=200" # 健康检查 HEALTHCHECK --interval=30s --timeout=3s \ CMD wget -q -O - http://localhost:8000/actuator/health || exit 1 # 启动应用 ENTRYPOINT exec java $JAVA_OPTS -jar app.jar