簡體   English   中英

在將WAR部署到tomcat docker容器后總是得到404

[英]After deployment of WAR to tomcat docker container always getting 404

我有一個grails應用程序,該應用程序已經運行,並且已通過Tomcat8 Jre8上的Elastic Beanstalk部署到了AWS。

我現在正嘗試將其部署在多碼頭環境中,並且我的行為很奇怪。

我正在使用tomcat:8.0-jre8https://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM