如何在 Docker 容器内为 Wildfly 设置堆大小?
Posted
技术标签:
【中文标题】如何在 Docker 容器内为 Wildfly 设置堆大小?【英文标题】:How to set heap size for wildfly inside Docker container? 【发布时间】: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
我想知道是否有另一种(更清洁的)方法来解决这个问题?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于如何在 Docker 容器内为 Wildfly 设置堆大小?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Dockerfile 在启动 docker 容器上运行 jboss-cli
通过 Eclipse 在 Docker 上调试 Wildfly 应用程序?