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