我终于找到了使用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
在localhost:8090/ index.jsp /上正确地显示了该servlet,但是当我试图访问localhost的servlet时,我得到了一个404 :8090/index.jsp/hello-servlet。
同时,当我的非dockerized运行时,我可以访问localhost:8080/例/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() {
}
}
我遗漏了什么?
https://stackoverflow.com/questions/69805687
复制相似问题