[英]After deployment of WAR to tomcat docker container always getting 404
我有一個grails應用程序,該應用程序已經運行,並且已通過Tomcat8 Jre8上的Elastic Beanstalk部署到了AWS。
我現在正嘗試將其部署在多碼頭環境中,並且我的行為很奇怪。
我正在使用tomcat:8.0-jre8
( https://hub.docker.com/r/library/tomcat/ )作為容器的映像,並且通過將war文件放在<tomcat_home>/webapps
,該映像上的部署非常簡單<tomcat_home>/webapps
。 另外,我正在將端口8080
映射到外界。 因此,docker-compose的相關部分如下所示:
api:
image: tomcat:8.0-jre8
container_name: api
volumes:
- ./deployment/api:/usr/local/tomcat/webapps
external_links:
- mysql:mysql
ports:
- "8080:8080"
根據日志,該應用程序已成功部署,甚至正在應用liquibase遷移:
21-Nov-2016 07:11:03.671 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /usr/local/tomcat/webapps/priz-0.5.war
21-Nov-2016 07:12:12.496 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
2016-11-21T07:13:38.397268676Z
Configuring Spring Security Core ...
... finished configuring Spring Security Core
2016-11-21T07:13:40.215275700Z
2016-11-21T07:13:40.777432843Z
Configuring Spring Security REST 2.0.0.M2...
... finished configuring Spring Security REST
2016-11-21T07:13:41.515464956Z
INFO 11/21/16 7:14 AM: liquibase: Successfully acquired change log lock
INFO 11/21/16 7:14 AM: liquibase: Reading from priz.DATABASECHANGELOG
INFO 11/21/16 7:14 AM: liquibase: Successfully released change log lock
21-Nov-2016 07:15:09.019 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /usr/local/tomcat/webapps/priz-0.5.war has finished in 245,345 ms
21-Nov-2016 07:15:09.026 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]
21-Nov-2016 07:15:09.036 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-apr-8009"]
21-Nov-2016 07:15:09.038 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 245425 ms
但是,當我嘗試訪問現有端點中的任何一個時,都將返回404。
現在,同樣基於日志,請求實際上正在到達服務器:
==> ./logs/localhost_access_log.2016-11-21.txt <==
172.17.0.1 - - [21/Nov/2016:07:15:09 +0000] "GET / HTTP/1.1" 404 -
172.17.0.1 - - [21/Nov/2016:07:15:09 +0000] "GET / HTTP/1.1" 404 -
172.17.0.1 - - [21/Nov/2016:07:16:45 +0000] "GET / HTTP/1.1" 404 -
172.17.0.1 - - [21/Nov/2016:07:17:01 +0000] "GET / HTTP/1.1" 404 -
172.17.0.1 - - [21/Nov/2016:07:17:07 +0000] "GET /index HTTP/1.1" 404 -
172.17.0.1 - - [21/Nov/2016:07:28:24 +0000] "GET /api/user/register HTTP/1.1" 404 -
172.17.0.1 - - [21/Nov/2016:07:28:46 +0000] "POST /api/user/register HTTP/1.1" 404 -
我什至該如何調試該問題? 我想念什么? 日志中沒有什么特別的。
此外,我嘗試了不同版本的tomcat,包括在AWS EBS上運行的確切版本。 另外,嘗試通過nginx處理請求,結果相同。
您的war文件名是priz-0.5.war
。 因此上下文名稱也為priz-0.5
。 您必須致電例如http://localhost:8080/priz-0.5
如果您想像http://localhost:8080/
一樣調用它,只需將war-File重命名為ROOT.war
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.