Wdrażanie aplikacji Java webapp do Tomcat 8 działającej w kontenerze Docker

Jestem całkiem nowy w Tomcat i Docker - więc prawdopodobnie brakuje mi Tomcat fundamental gdzieś w tym pytaniu.

To, co próbuję zrobić, to zbudować kontener dokujący, który uruchamia usługę SpringBoot Restful Web Service, która zwraca tylko statyczne dane. To wszystko działa na OSX, więc używam również Boot2Docker.

Napisałem własny plik Dockerfile, aby zbudować kontener, w którym działa moja aplikacja:

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/

Ten plik Dockerfile działa dobrze i jestem w stanie uruchomić kontener z stworzony obraz.

docker build -t myapp .

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

Ten kontener uruchamia się poprawnie i nie wyświetla żadnych błędów i wyświetla komunikat informujący o wdrożeniu mojej aplikacji.

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

Kontener również poprawnie ma myapp.wojna skopiowana na ścieżkę opisaną w pliku Dockerfile. Co więcej, mogę przejść do domyślnej strony Tomcat, aby potwierdzić, że Tomcat jest uruchomiony, mogę również trafić wszystkie przykłady itp.

Do problemu, gdy przejdę do http://192.168.59.103:8888/myapp/getData dostaję 404. I Nie wiem dlaczego. Czy coś mi umknęło w związku z ... wojna z Tomcatem?

Author: Chris, 2015-03-23

3 answers

Próbujesz skopiować wojnę do poddir poniżej webapps, to jest złe. Plik wojny należy skopiować prosto do folderu webapps.

Usuń polecenie mkdir i zastąp kopię w następujący sposób:

COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war
Tomcat wyciągnie wojnę.
 55
Author: crazyman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-26 15:37:30

Do tego jest jeden.

Możesz po prostu biegać,

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

Spowoduje to skopiowanie pliku wojny do katalogu webapps i uruchomienie aplikacji w mgnieniu oka.

 13
Author: Krishna Chaitanya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-14 19:23:16

Tomcat wyodrębni wojnę skopiowaną tylko do katalogu webapp . Zmień plik DockerFile jak poniżej

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

Możesz potrzebować dostępu do adresu url, jak poniżej, chyba że podałeś webroot

Http://192.168.59.103:8888/myapp/getData

 5
Author: Saril Sudhakaran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-28 17:16:41