首页 > 解决方案 > 为 Spring MVC 创建并运行 docker 镜像

问题描述

我想将我的 spring mvc 应用程序与 rest 一起部署到 docker。我用这个 dockerfile 创建了基于 tomcat 的图像:

FROM tomcat:8.5.31-jre8
ADD  /target/my-app.war /usr/local/tomcat/webapps/
CMD ["catalina.sh", "run"]
EXPOSE 8080

和我的休息控制器:

@RestController
@RequestMapping("")
public class IndexController {
    @RequestMapping(path="", method = RequestMethod.GET)
    public String[] findAll() {
        return new String[] {"sdfsdsdf", "sfsdfsff", "fdsfsfsfdfffdsfsdf"};
    }
}

当我使用我的 IDE 从本地 Tomcat 运行我的应用程序时,它可以工作,当我转到 localhost:8080 时,我得到了控制器响应,但是现在当我创建图像并在浏览器中转到 localhost:8080 时运行它时,我可以看到 tomcat 主页,而不是我的端点响应。你能告诉我我做错了什么吗?

这是我用来创建和运行图像的命令:

docker build -t myapp .

docker run -d  -p 8080:8080  --name mydockerapp myapp

我正在使用Win10。感谢您的回答。

标签: springwindowsspring-mvcdockertomcat

解决方案


您似乎正在将 Web 应用程序部署到本地 tomcat 中的根上下文路径。但是,docker 镜像中的 tomcat 已经有一个欢迎页面应用程序部署到根上下文路径。

您需要做的是删除此欢迎页面应用程序并将您的应用程序重命名为ROOT.war,然后部署它。

FROM tomcat:8.5.31-jre8
RUN rm -rvf /usr/local/tomcat/webapps/ROOT
ADD  /target/my-app.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
EXPOSE 8080

推荐阅读