spring - 为 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。感谢您的回答。
解决方案
您似乎正在将 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
推荐阅读
- pandas - pandas-like resampling with week frequency in DolphinDB
- json - 如何访问 json / ruby 中的键、值
- powershell - Powershell:列出 ADusers - 需要用户所属的组
- exe - 执行 exe 文件时出错。“原因:系统找不到指定的文件”
- android - 我得到“调用需要 API 级别 X(当前最小值为 Y)”,即使我将 min 更改为 X
- web-scraping - 是否可以将 Scrapy 实现到桌面应用程序中?
- django - Heroku 在通过 Django 部署之前构建 React 应用程序
- android - 在 MaterialCardView 的中心设置自定义图标
- elasticsearch - 按日期和对象分组弹性搜索
- eslint - eslint 中的 Tslint 规则等效