Déploiement de Java webapp pour Tomcat 8 dans un conteneur Docker

Je suis assez nouveau à Tomcat et Docker - donc je suis probablement manquer un Tomcat fondamental quelque part dans cette question.

ce que j'essaie de faire est de construire un conteneur Docker qui exécute un service Web Restful de SpringBoot qui retourne juste quelques données statiques. Tout fonctionne sur OSX, donc J'utilise Boot2Docker.

j'ai écrit mon propre fichier Dockerfile pour construire le conteneur dans lequel fonctionne mon application:

FROM tomcat:8.0.20-jre8

RUN mkdir /usr/local/tomcat/webapps/myapp

COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp/

ce fichier Dockerfile fonctionne très bien et je suis capable de démarrer le conteneur de l'image créée.

docker build -t myapp .

docker run -it --rm -p 8888:8080 myapp

ce conteneur démarre correctement et ne produit aucune erreur et affiche le message disant que mon application a été déployée.

22-Mar-2015 23:07:21.217 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 
Deploying web application directory /usr/local/tomcat/webapps/myapp

le container a aussi correctement le myapp.la guerre copié sur le chemin décrit dans le Dockerfile. En outre, je suis capable de naviguer à la page par défaut Tomcat pour confirmer que Tomcat est en cours d'exécution, je peux également frapper tous les exemples, etc.

au problème, quand je navigue vers http://192.168.59.103:8888/myapp/getData j'ai un 404. Je ne peux pas tout à fait comprendre pourquoi. Est-ce que je manque quelque chose concernant A.déploiement de guerre à Tomcat?

43
demandé sur Chris 2015-03-23 02:45:19

3 réponses

vous essayez de copier la guerre dans un sous-DIR ci-dessous webapps, il est faux. Le fichier war doit être copié simplement dans le dossier webapps.

supprimer la commande mkdir, et remplacer la copie comme ceci:

COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war

Tomcat va extraire la guerre.

55
répondu crazyman 2015-08-26 15:37:30

Il y a un oneliner pour celui-ci.

Vous pouvez simplement exécuter,

docker run -v /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war:/usr/local/tomcat/webapps/myapp.war -it -p 8080:8080 tomcat

ceci copiera le fichier war dans le répertoire webapps et lancera votre application en peu de temps.

13
répondu Krishna Chaitanya 2017-10-14 19:23:16

Tomcat va extraire la guerre copiée dans le répertoire webapp seulement . Changer DockerFile comme ci-dessous

FROM tomcat:8.0.20-jre8
COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war

vous pourriez avoir besoin d'accéder à l'url comme ci-dessous à moins que vous n'ayez spécifié le webroot

http://192.168.59.103:8888/myapp/getData

5
répondu Saril Sudhakaran 2017-08-28 17:16:41