如何在Docker容器中设置Java堆大小(Xms / Xmx)?

至于提出这个问题,Docker看起来已经足够新,没有网上的这个问题的答案。 我发现的唯一的地方就是这篇文章 ,作者说这很难,就是这样。

我同意这取决于你使用的容器。 如果您使用的是正式的Tomcat映像 ,它看起来很简单,您将需要传递JAVA_OPTS环境variables和堆设置:

 docker run --rm -e JAVA_OPTS='-Xmx1g' tomcat 

请参阅如何设置JVM参数?

请注意,在docker-compose.yml文件中,您需要省略双引号:

  environment: - JVM_OPTS=-Xmx12g -Xms12g -XX:MaxPermSize=1024m 

要么

  environment: - CATALINA_OPTS=-Xmx12g -Xms12g -XX:MaxPermSize=1024m 

这一切都取决于你的Java应用程序如何打包,以及如何使用Docker公开configuration文件。

例如, 官方的tomcat镜像指出configuration文件在默认位置是可用的:/ usr / local / tomcat / conf /

所以很容易覆盖整个目录或只有一个configuration文件:

 docker run -it --rm -p 8080:8080 -v $PWD/catalina.properties:/usr/local/tomcat/conf/catalina.properties tomcat:8.0 

您也可以将这些设置放置在您的图像中,以便在您的Dockerfile中存在以下内容:

 ENV JAVA_OPTS="-XX:PermSize=1024m -XX:MaxPermSize=512m"