该文提出了减少Spring Boot减少JVM占用的三种Dockerfile镜像配置:
FROM adoptopenjdk/openjdk8-openj9:alpine-slim COPY target/app.jar /my-app/app.jar ENTRYPOINT java $JAVA_OPTS -Xshareclasses -Xquickstart -jar /my-app/app.jar
FROM oracle/graalvm-ce:1.0.0-rc15 COPY target/app.jar /my-app/app.jar ENTRYPOINT java $JAVA_OPTS -jar /my-app/app.jar
FROM java:openjdk-8-alpine COPY target/app.jar /my-app/app.jar COPY run-java.sh /my-app/run-java.sh ENTRYPOINT JAVA_OPTIONS=${JAVA_OPTS} JAVA_APP_JAR=/my-app/app.jar /my-app/run-java.sh
虽然我们在应用解决方案时总是需要考虑上下文,但对我来说, 获胜者是OpenJ9, 从而以最少的配置实现了生产就绪的性能和内存占用。
虽然仍然没有找到使用不合适的情况,但这并不意味着它将成为一个银弹解决方案,请记住,最好是测试替代品,看看哪种更适合您的需求。
为什么不用GraalVM?
GraalVM是一个伟大的项目,在接下来的几个月里也许它能颠覆让本文的结论,但到目前为止,我发现了一些不能让我想在生产中使用它的东西,特别是Spring Boot。