web-dev-qa-db-fra.com

Comment définir Java (Xms / Xmx) dans le conteneur Docker?

Au moment de poser cette question, Docker semble être suffisamment 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 difficile, et c'est tout.

28
Tung Nguyen

Je conviens que cela dépend du conteneur que vous utilisez. Si vous utilisez l'officiel image Tomcat , il semble que ce soit assez simple, vous devrez passer le Java_OPTS variable d’environnement avec vos paramètres de tas:

docker run --rm -e Java_OPTS='-Xmx1g' Tomcat

Voir Comment définir les paramètres de la machine virtuelle Java?

33
jbarrueta

Notez que dans un docker-compose.yml fichier - vous devrez omettre les guillemets:

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

ou

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

Vous pouvez également simplement placer ces paramètres dans votre image afin que quelque chose comme ce qui suit existe dans votre fichier Docker:

ENV Java_OPTS="-XX:PermSize=1024m -XX:MaxPermSize=512m"
13
occasl

Tout dépend de la manière dont votre application Java est empaquetée et de la manière dont ses fichiers de configuration sont exposés à l'aide de Docker.

Par exemple, image officielle de Tomcat indique que le fichier de configuration est disponible à l'emplacement par défaut:/usr/local/Tomcat/conf /

Tellement facile de remplacer un répertoire entier ou un seul fichier de configuration:

docker run -it --rm -p 8080:8080 -v $PWD/catalina.properties:/usr/local/Tomcat/conf/catalina.properties Tomcat:8.0
5
Mark O'Connor