Comment définir Java heap size (Xms/Xmx) dans Docker container?

au moment de poser cette question, Docker semble être assez nouveau pour ne pas avoir de réponses à cette question sur le net. Le seul endroit que j'ai trouvé est cet article dans lequel l'auteur dit que c'est dur, et c'est tout.

18
demandé sur Tung Nguyen 2015-04-28 18:25:52

4 réponses

je suis d'accord que cela dépend du contenant que vous utilisez. Si vous utilisez l'officiel Tomcat image, il semble que c'est assez simple, vous aurez besoin de passer le JAVA_OPTS variable d'environnement avec votre tas de paramètres:

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

Voir comment définir les paramètres JVM?

27
répondu jbarrueta 2016-12-14 15:28:56

Notez que dans un docker-compose.yml fichier - vous aurez besoin de laisser les guillemets:

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

ou

  environment:
  - CATALINA_OPTS=-Xmx12g -Xms12g -XX:MaxPermSize=1024m
17
répondu hawkeye 2016-08-25 05:25:52

Vous pouvez aussi simplement placer ces paramètres dans votre image de sorte que quelque chose comme ce qui suit existerait dans votre fichier Dockerfile:

ENV JAVA_OPTS="-XX:PermSize=1024m -XX:MaxPermSize=512m"
6
répondu occasl 2016-03-21 18:51:24

cela dépend comment votre application Java est empaquetée et comment ses fichiers de configuration sont exposés en utilisant Docker.

Par exemple image tomcat officielle états que le fichier de configuration est disponible dans l'emplacement par défaut: /usr/local/tomcat/conf/

Donc facile à remplacer tout le répertoire, ou tout simplement un fichier de configuration:

docker run -it --rm -p 8080:8080 -v $PWD/catalina.properties:/usr/local/tomcat/conf/catalina.properties tomcat:8.0
4
répondu Mark O'Connor 2015-04-28 18:01:04