【发布时间】: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() {
}
}
我错过了什么?
【问题讨论】: