我需要使用类似JVM的选项在Docker容器中运行Java应用程序,但是我不知道在哪里可以设置它,我尝试使用“ java -Dcom ....”命令,但是没有工作。做这个的最好方式是什么?
-Dcom.sun.management.jmxremote.rmi.port = 9090
-Dcom.sun.management.jmxremote = true
-Dcom.sun.management.jmxremote.port = 9090
-Dcom.sun.management.jmxremote.ssl = false
-Dcom.sun.management.jmxremote.authenticate = false
-Dcom.sun.management.jmxremote.local.only = false
-Djava.rmi.server.hostname = 192.168.99.100
答案 0 :(得分:1)
这是我的例子:
CMD java -Xmx1024m -Xms512m -Dserver.port=8080 -jar mywar.war
此外,如果您要在此处添加许多属性,则最好使用环境变量创建文件。并将它们加载到容器中。并在您的应用程序中使用env变量来泛化您的应用程序。
答案 1 :(得分:0)
如果您正在使用docker-compose.yml文件运行,则应添加,然后在特定的docker条目下, 例如:
docker-name:
extends:
file: ...
service: ...
image: ...
ports:
- "9090:9090"
environment:
component_type: ...
instance_id: ...
JAVA_OPTS: "
-Dcom.sun.management.jmxremote.rmi.port=9090
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=localhost"
volumes:
- ...
..
.. ..
答案 2 :(得分:0)
要将JVM参数传递给Spring Boot应用程序,我使用了以下内容:
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.rmi.port=9010 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost"
我有一个docker-compose服务,可以使用VisualVM之类的东西专门配置我的应用程序(看起来您也在尝试做类似的事情),因为我并不总是想要使用这些配置:
version: '3.7'
services:
profile:
image: my_base_image
container_name: my_container_name
ports:
- '8081:8080'
- '9010:9010'
volumes:
- './src:/build/src
- './target:/build/target'
- './logs:/build/logs'
- './pom.xml:/build/pom.xml'
command: 'mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.rmi.port=9010 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost"'
我只是运行以下命令来启动它:
docker-compose up profile
如果您想阅读整篇文章,我已经撰写了有关该主题的文章:
https://blog.phillipninan.com/2020/08/19/diagnose-memory-leaks-in-spring-boot-with-visual-vm/