Est-il possible de déployer un fichier java war ou jar dans Tomcat ? Je recherche de nombreux tutoriels et la seule solution que j'ai trouvée est de copier le fichier war du projet dans /usr/local/tomcat/webapps/
.
J'ai utilisé cette solution, mais je voudrais améliorer ma dockerisation. Mon objectif principal est que lorsque je lance mes 2 images (l'application dans tomcat et l'image db) avec docker-compose, je veux utiliser mon fichier war local du dossier cible dans tomcat, et, lorsque je reconstruis le war après un changement de code, ce changement sera reflété sans arrêter les conteneurs, les supprimer et les reconstruire. Pouvez-vous m'aider à faire cela ? Mes tentatives ont échoué. Je veux seulement le faire à des fins de développement.
Voici mon docker-compose.yml
version: '3'
services:
tomcat-service:
build:
context: ../
dockerfile: docker/app/Dockerfile
volumes:
- D:\myproj\target\app.war:/usr/local/tomcat/webapps/ROOT.war
ports:
- "8080:8080"
depends_on:
- "db-service"
db-service:
build: ./database
ports:
- "5433:5432"
et le Dockerfile pour ce tomcat
FROM tomcat:8.0-jre8
RUN rm -rvf /usr/local/tomcat/webapps/ROOT
COPY ./docker/app/context.xml /usr/local/tomcat/conf/
# avec la commande de copie suivante ça fonctionne, mais lorsque je reconstruis le fichier war, j'ai besoin d'arrêter docker-compose et le reconstruire et le relancer.. Je veux utiliser un volume au lieu de copier le war
#COPY ./pnp-web/target/pnp.war /usr/local/tomcat/webapps/ROOT.war
EXPOSE 8080
CMD ["catalina.sh", "run"]
Avec la configuration ci-dessus, l'application démarre, mais lorsque je lance mvn clean package
l'application ne se charge plus
ÉDIT
J'ai vérifié le journal du conteneur tomcat et j'ai trouvé cette erreur :
tomcat-cont | 10 juil. 2018 08:20:36.754 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Déploiement de l'archive de l'application web /usr/local/tomcat/webapps/ROOT.war
tomcat-cont | 10 juil. 2018 08:20:36.858 GRAVE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
tomcat-cont | org.apache.catalina.LifecycleException: Échec de démarrage du composant [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
... (remaining content remains the same)
cette erreur s'est produite lorsque j'ai essayé de redémarrer le conteneur lorsque le nouveau war est construit.