我正在尝试使用最新版本的 Spring Boot (2.3.0) 构建一个 docker 镜像。我现在需要创建一个镜像,只需运行命令 mvn:spring-boot:build-image 。这将为我创建一个 docker 镜像。在这种情况下,如何设置 JVM 参数(最大、最小堆大小)?
最佳答案
截至今天,您无法在 spring-boot:build-image 中设置 JVM 参数。
Spring Boot 构建镜像在内部使用 Packeto,它接受以下 4 个环境变量,如 bellsoft-liberica 中所述。 GitHub。
"BP_JVM_VERSION" : "13.0.1",
"BPL_JVM_HEAD_ROOM" : "10",
"BPL_JVM_LOADED_CLASS_COUNT" : "35",
"BPL_JVM_THREAD_COUNT" : "10"
作为替代选项,您可以在运行镜像时传递 JVM 参数。
docker run -p 8080:8080 --env JAVA_OPTS="-Xmx300m -Xms200m" -t youImageName
如果使用 Kubernetes,您可以在 deployment level 配置 JVM 选项.
spec:
containers:
- name: yourapp
image: image path
ports:
- containerPort: 8080
env:
- name: SPRING_PROFILES_ACTIVE
value: "prod"
- name: BPL_JVM_HEAD_ROOM
value: "2"
- name: BPL_JVM_LOADED_CLASS_COUNT
value: "35"
- name: BPL_JVM_THREAD_COUNT
value: "10"
- name: JAVA_OPTS
value: >-
-XX:ReservedCodeCacheSize=40M
-XX:MaxMetaspaceSize=60M
-Xlog:gc
-Xms34m
-Xmx40m
-Xss256k
-XX:MaxRAM=150M
Spring boot 存储库中有一个 GitHub 问题正在讨论此问题 Failed to change JVM arguments for buildpacked image
关于spring - 运行 mvn spring-boot :build-image command in Spring Boot 2. 3.0 时如何设置 JVM 参数以生成 docker 镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61855229/