【问题标题】:How to set heap size for wildfly inside Docker container?如何在 Docker 容器内为 Wildfly 设置堆大小?
【发布时间】:2017-05-04 10:54:52
【问题描述】:

我正在尝试增加 docker 容器中 Wildfly 的堆大小。这可以通过在常规 Wildfly 设置中更新 wildfly/bin/standalone.conf 轻松完成。

我们的 wildfly 基础 docker 映像的默认堆大小为 512 MB,在其中一个 Web 应用程序中必须为 1GB。一种方法是使用 sed 命令在 Docker 文件中进行简单的文本替换 -

RUN sed -i -- 's/JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m/JAVA_OPTS="-Xms2048m -Xmx6144m -XX:MaxPermSize=256m/g' /path/standalone.conf

我想知道是否有另一种(更清洁的)方法来解决这个问题?

【问题讨论】:

    标签: java docker jvm containers wildfly


    【解决方案1】:

    我建议你使用 JAVA_TOOL_OPTIONS 而不是 JAVA_OPTS 。因为 JVM 直接理解 JAVA_TOOL_OPTIONS。

    【讨论】:

      【解决方案2】:

      使用docker-compose时设置环境变量如下!

      environment:
        - JAVA_OPTS=-server -Xms512m -Xmx2048m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -XX:+UseAdaptiveSizePolicy -XX:MaxMetaspaceSize=1024m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true-Djava.net.preferIPv4Stack=true
      

      不要使用"(引号)!

      【讨论】:

      • java.net.preferIPv4Stack 重复两次
      【解决方案3】:

      您可以在用于运行 docker 容器的命令中传递 JAVA_OPTS 环境变量的值:

      docker run -it --env JAVA_OPTS="-server -Xms2048m -Xmx6144m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true" jboss/wildfly
      

      或者,您可以通过创建包含以下内容的 Dockerfile 来扩展标准图像:

      FROM jboss/wildfly:latest
      
      COPY standalone.conf $JBOSS_HOME/bin/
      

      并将修改后的standalone.conf 放在它旁边的目录中。

      然后你就可以构建它了:

      docker build -t my/wildfly:latest .
      

      并运行它:

      docker run my/wildfly
      

      【讨论】:

        猜你喜欢
        • 2015-07-07
        • 2021-07-27
        • 1970-01-01
        • 2013-02-23
        • 2016-02-08
        • 1970-01-01
        • 2013-08-26
        • 2015-04-10
        • 1970-01-01
        相关资源
        最近更新 更多