web-dev-qa-db-fra.com

Docker ajoute un fichier de guerre à l'image officielle de Tomcat

J'ai tiré l'image Docker officielle de Tomcat en exécutant cette commande.

docker run -it --rm Tomcat:8.0

En l'utilisant comme image de base, je dois créer une nouvelle image contenant mon fichier war dans le dossier Tomcatwebapps. J'ai créé Dockerfile comme ça.

From Tomcat8
ADD warfile /usr/local/Tomcat

Lorsque j'exécute ce Dockerfile en créant une image, je ne peux pas voir la première page de Tomcat.

Quelqu'un peut-il me dire comment ajouter mon fichier de guerre au dossier webapp d'images Tomcat officiel.

22
user2451997

En lisant la documentation du dépôt, vous feriez quelque chose comme ça

FROM Tomcat
MAINTAINER xyz

ADD your.war /usr/local/Tomcat/webapps/

CMD ["catalina.sh", "run"]

Créez ensuite votre image avec docker build -t yourName <path-to-dockerfile>

Et lancez-le avec:

docker run --rm -it -p 8080:8080 yourName
  • --rm supprime le conteneur dès que vous l'arrêtez
  • -p transfère le port à votre hôte (ou si vous utilisez boot2docker sur cette IP)
  • -it permet le mode interactif, vous voyez donc si quelque chose est déployé
66
daniel

En s'appuyant sur la réponse de @ daniel, si vous souhaitez déployer votre WAR à la racine de Tomcat, j'ai fait ceci:

FROM Tomcat:7-jre7
MAINTAINER xyz

RUN ["rm", "-fr", "/usr/local/Tomcat/webapps/ROOT"]
COPY ./target/your-webapp-1.0-SNAPSHOT.war /usr/local/Tomcat/webapps/ROOT.war

CMD ["catalina.sh", "run"]

Il supprime la webapp racine existante, copie votre WAR dans le nom de fichier ROOT.war puis exécute Tomcat.

20
Tom Saleeba

docker run -it --rm --name MYTOMCAT -p 8080: 8080 -v .../wars:/usr/local/Tomcat/webapps/Tomcat: 8.0

où le dossier wars contient la guerre à déployer

2
Mohamed EL HABIB

Comment vérifiez-vous le dossier webapps?

Le dossier webapps se trouve dans le conteneur Docker. Si vous souhaitez accéder à votre conteneur webapps, vous pouvez monter un répertoire Host dans votre conteneur pour l'utiliser comme dossier webapps. De cette façon, vous pouvez accéder aux fichiers sans accéder à Docker. Détails voir ici

Pour accéder à vos journaux, vous pouvez le faire lorsque vous exécutez votre conteneur, par exemple.

docker run -rm -it -p 8080:8080 **IMAGE_NAME** /path/to/Tomcat/bin/catalina.sh  && tail -f /path/to/Tomcat/logs

ou vous démarrez votre conteneur Docker, puis faites quelque chose comme:

docker exec -it **CONTAINER_ID** tail -f /path/to/Tomcat/logs
2
daniel