【问题标题】:.war on tomcat on docker, 404 on servletdocker上tomcat上的.war,servlet上的404
【发布时间】:2021-11-02 05:17:02
【问题描述】:

我终于找到了使用 Docker 的动机:我尝试在 docker 容器上运行的 tomcat 上部署一个基本的“hello-world”servlet。

当我在由 intelliJ 启动的 Tomcat 上运行这个 servlet 时,它可以完美运行。

但是当我将它与 Docker 一起使用时,使用这个 Dockerfile

FROM tomcat:latest
ADD example.war /usr/local/tomcat/webapps/
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]

然后我构建/启动映像/容器:

docker build -t example .

docker run -p 8090:8080 example

index.jsp 在 localhost:8090/example/ 上正确显示,但是当我尝试访问 localhost:8090/example/hello-servlet 上的 servlet 时得到 404

同时,当我的非dockerized tomcat运行时,我可以访问localhost:8080/example/hello-servlet,并且运行良好。

这里是servlet代码:

package io.bananahammock.bananahammock_backend;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
    private String message;

    public void init() {
        message = "Hello World!";
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");

        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>" + message + "</h1>");
        out.println("</body></html>");
    }

    public void destroy() {
    }
}

我错过了什么?

【问题讨论】:

    标签: docker tomcat servlets


    【解决方案1】:

    自 2021 年 8 月 31 日 (this commit) 起,Docker 映像 tomcat:latest 使用 Tomcat 10(请参阅available tags 的列表)。

    您可能知道,使用 javax.* 命名空间的软件无法在 Jakarta EE 9 服务器上运行,例如 Tomcat 10(参见例如 this question)。因此:

    • 如果是新项目,请迁移到 jakarta.* 命名空间并在 Tomcat 10 或更高版本上测试所有内容,
    • 如果是遗留项目,请使用另一个 Docker 映像,例如tomcat:9 标签。

    【讨论】:

    • FROM tomcat:9 完美运行。谢谢。 (FROM tomcat:8.0FROM tomcat 没有)
    • tomcat 标记与tomcat:latest 相同,因此不起作用。 Tomcat 8.0 几年前就已报废,因此您应该改用 tomcat:8(它是 Tomcat 8.5 的别名)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    相关资源
    最近更新 更多