如何在Docker容器中设置Wildfly的堆大小?

Ank*_*agi 5 java containers jvm docker wildfly

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

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

RUN sed -i -- 's/JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m/JAVA_OPTS="-Xms2048m -Xmx6144m -XX:MaxPermSize=256m/g' /path/standalone.conf
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*ten 8

使用时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
Run Code Online (Sandbox Code Playgroud)

不要使用"(引号)!


Ste*_*e C 5

您可以在用于运行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
Run Code Online (Sandbox Code Playgroud)

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

FROM jboss/wildfly:latest

COPY standalone.conf $JBOSS_HOME/bin/
Run Code Online (Sandbox Code Playgroud)

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

然后,您可以构建它:

docker build -t my/wildfly:latest .
Run Code Online (Sandbox Code Playgroud)

并运行它:

docker run my/wildfly
Run Code Online (Sandbox Code Playgroud)