aircraft-server/aircraft-system/Dockerfile
2025-08-15 12:48:57 +08:00

57 lines
1.6 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第一阶段使用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