2015-03-22 29 views
36

Sono abbastanza nuovo per Tomcat e Docker - quindi probabilmente mancherò un Tomcat fondamentale da qualche parte in questa domanda.Distribuzione di webapp Java a Tomcat 8 in esecuzione nel contenitore Docker

Quello che sto cercando di fare è costruire un contenitore Docker che esegua un servizio web Restback SpringBoot che restituisce solo alcuni dati statici. Tutto questo è in esecuzione su OSX, quindi sto utilizzando anche Boot2Docker.

ho scritto il mio Dockerfile per costruire il contenitore che la mia applicazione funziona in:

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/ 

Questo Dockerfile funziona bene e sono in grado di avviare il contenitore dalla immagine creata.

docker build -t myapp . 

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

Questo contenitore si avvia correttamente e non emette errori e visualizza il messaggio che indica che la mia app è stata distribuita.

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 

Il contenitore ha inoltre correttamente copiato il file myapp.war nel percorso descritto nel file Docker. Inoltre sono in grado di navigare verso la pagina predefinita di Tomcat per confermare che Tomcat è in esecuzione, posso anche trovare tutti gli esempi, ecc.

Per il problema, quando navigo verso http://192.168.59.103:8888/myapp/getData ottengo un 404. Non riesco a farlo capire perché Mi manca qualcosa riguardo un deploy .war a Tomcat?

+0

Da dove viene ottenuto l'indirizzo IP? –

+0

È quello assegnato alla mia VM Boot2Docker. Colpire questo IP: porta senza/myapp mostra la pagina Tomcat predefinita. – Chris

+0

Sono un ragazzo di Linux quindi il comportamento potrebbe essere diverso ma provare a visitare localhost: 8080 invece. –

risposta

43

Si tenta di copiare la guerra in una sottocoda sotto le webapps, è sbagliato. Il file war deve essere copiato in modo semplice nella cartella webapps.

rimuovere il comando mkdir, e sostituire la copia in questo modo:

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

Tomcat estrarrà la guerra.

4

Tomcat estrae la copia di guerra solo nella directory webapp. Change DockerFile come di seguito

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

Potrebbe essere necessario accedere all'URL, come di seguito se non è stato specificato il webroot

http://192.168.59.103:8888/myapp/getData

4

C'è un oneliner per questo.

Si può semplicemente eseguire,

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

Questo copierà il file WAR nella directory webapps e ottenere la vostra applicazione funzionante in poco tempo.