W odpowiedzi na to pytanie Docker wygląda na wystarczająco nowy, aby nie mieć odpowiedzi na to pytanie w Internecie. Jedyne miejsce, które znalazłem to this article, w którym autor mówi, że jest trudne i to wszystko.Jak ustawić wielkość sterty Java (Xms/Xmx) w kontenerze Docker?
Odpowiedz
Zgadzam się, że zależy to od tego, z jakiego kontenera korzystasz. Jeśli używasz oficjalnego Tomcat image, wygląda na to, że to dość proste, trzeba będzie przekazać zmienną JAVA_OPTS
środowiskową z ustawieniami sterty:
docker run --rm -e JAVA_OPTS='-Xmx1g' tomcat
Zobacz How to set JVM parameters?
Wszystko zależy od tego, w jaki sposób pakowana jest Twoja aplikacja Java i w jaki sposób pliki konfiguracyjne są wyświetlane za pomocą Docker.
Na przykład official tomcat image stwierdza, że plik konfiguracyjny jest dostępny w domyślnej lokalizacji:/usr/local/tomcat/conf/
Tak łatwo zastąpić cały katalog lub tylko jeden plik konfiguracyjny:
docker run -it --rm -p 8080:8080 -v $PWD/catalina.properties:/usr/local/tomcat/conf/catalina.properties tomcat:8.0
Można też po prostu umieścić te ustawienia w obraz tak coś jak poniżej istniałby w Dockerfile:
ENV JAVA_OPTS="-XX:PermSize=1024m -XX:MaxPermSize=512m"
Jestem prawie pewien, że ustawienie zmiennej środowiskowej JAVA_OPTS będzie działać tylko na oficjalnym obrazie Tomcat. Może nie działać, jeśli stworzyłeś własny obraz Tomcat (np. Używając bazy Ubuntu i instalując Tomcat jako część kompilacji) –
Zauważ, że w pliku docker-compose.yml
- musisz opuścić podwójnie cytaty:
environment:
- JVM_OPTS=-Xmx12g -Xms12g -XX:MaxPermSize=1024m
lub
environment:
- CATALINA_OPTS=-Xmx12g -Xms12g -XX:MaxPermSize=1024m
Tak, to lepiej! –