gpt4 book ai didi

tomcat - 将 WAR 部署到 tomcat docker 容器后总是得到 404

转载 作者:行者123 更新时间:2023-11-28 21:49:33 24 4
gpt4 key购买 nike

我有一个 grails 应用程序,它已经运行并通过 Tomcat8 Jre8 上的 Elastic Beanstalk 部署到 AWS。

我现在正尝试将它部署在多 docker 环境中,但我的行为很奇怪。

我正在使用 tomcat:8.0-jre8 ( https://hub.docker.com/r/library/tomcat/ ) 作为容器的镜像,在该镜像上的部署非常简单,只需在 <tomcat_home>/webapps 中放置一个 war 文件即可。 .另外,我正在映射端口 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

关于tomcat - 将 WAR 部署到 tomcat docker 容器后总是得到 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40714904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com