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?
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.
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.
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