diff --git a/Dockerfile b/Dockerfile index c8aa788..8fa3eb2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,27 @@ -# Build stage: uses Maven + JDK 17 (Alpine) to compile and package the application. +# 构建阶段:Maven + JDK 17 编译,生成薄 jar 及依赖 FROM maven:3.9-eclipse-temurin-17-alpine AS builder WORKDIR /app -# Copy pom.xml first to leverage Docker layer caching for dependency downloads. +# 优先复制 pom.xml 利用 Docker 层缓存(依赖不变时跳过 go-offline) COPY pom.xml . RUN mvn dependency:go-offline -q -# Copy source and build the fat JAR, skipping tests. COPY src ./src RUN mvn clean package -DskipTests -q -# Runtime stage: slim JRE-only image for a smaller production footprint. +# 运行阶段:仅含 JRE 的精简镜像 FROM eclipse-temurin:17-jre-alpine WORKDIR /app -COPY --from=builder /app/target/*.jar app.jar + +# 复制部署结构:bin/ libs/ etc/ +COPY --from=builder /app/src/main/scripts/start.sh bin/start.sh +COPY --from=builder /app/target/libs/ libs/ +COPY --from=builder /app/src/main/resources/application.yml etc/application.yml +COPY --from=builder /app/src/main/resources/logback.xml etc/logback.xml + +RUN mkdir -p logs && chmod +x bin/start.sh + EXPOSE 8080 -ENTRYPOINT ["java", "-jar", "app.jar"] + +# start.sh 检测到 /.dockerenv 后以 exec 前台方式运行 +ENTRYPOINT ["bin/start.sh"]