Docker和设置JVM参数

时间:2018-07-30 10:58:09

标签: java docker jvm

我需要使用类似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

3 个答案:

答案 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/