从一个正确的 Dockerfile 开始
性能优化,第一步永远不是 JVM 参数,而是 镜像构建方式。
生产级 Dockerfile 示例
# -------- 构建阶段 -------- FROM maven:3.9.4-eclipse-temurin-17 AS build WORKDIR /app # 先拷贝 pom.xml,用于依赖缓存 COPY pom.xml . RUN mvn -q -e -DskipTests dependency:go-offline # 再拷贝源码 COPY src ./src RUN mvn clean package -DskipTests # -------- 运行阶段 -------- FROM eclipse-temurin:17-jre-alpine ENV JAVA_OPTS="\ -XX:+UseContainerSupport \ -XX:MaxRAMPercentage=75 \ -XX:ActiveProcessorCount=1 \ -XX:+UseG1GC" WORKDIR /app COPY --from=build /app/target/*.jar app.jar ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/app.jar"]这个 Dockerfile 看起来并不复杂,但每一行都对应一个明确的性能目标。
下面逐条拆解。