Как установить размер кучи 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"