Как установить размер кучи Java (Xms/Xmx) внутри контейнера Docker?

Как поднимая этот вопрос, Докер выглядит достаточно новым, чтобы не иметь ответов на этот вопрос в сети. Единственное, что я нашел, это в этой статье, в котором автор говорит, что это сложно, и что он.

Ответы

Ответ 1

Я согласен, что это зависит от того, какой контейнер вы используете. Если вы используете официальный образ Tomcat, он выглядит достаточно простым, вам нужно передать переменную среды JAVA_OPTS с настройками кучи

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

См. Как установить параметры JVM?

Ответ 2

Обратите внимание, что в файле docker-compose.yml вам нужно будет оставить двойные кавычки:

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

или

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

Ответ 3

Все зависит от того, как упаковано ваше приложение Java и как его файлы конфигурации открываются с помощью Docker.

Например, официальное изображение tomcat сообщает, что файл конфигурации доступен по умолчанию:/usr/local/tomcat/conf/

Так легко переопределить весь каталог или только один файл конфигурации:

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

Ответ 4

Вы также можете просто разместить эти настройки в своем изображении, так что в вашем файле Docker будет существовать следующее:

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