我想将带有 rest 的 spring mvc 应用程序部署到 docker。我用这个 dockerfile 创建了基于 tomcat 的图像:
FROM tomcat:8.5.31-jre8
ADD /target/my-app.war /usr/local/tomcat/webapps/
CMD ["catalina.sh", "run"]
EXPOSE 8080
和我的休息 Controller :
@RestController
@RequestMapping("")
public class IndexController {
@RequestMapping(path="", method = RequestMethod.GET)
public String[] findAll() {
return new String[] {"sdfsdsdf", "sfsdfsff", "fdsfsfsfdfffdsfsdf"};
}
}
当我使用我的 IDE 从本地 Tomcat 运行我的应用程序时,它工作正常,当我转到 localhost:8080 时,我得到了 Controller 响应,但是现在当我创建图像并在浏览器中转到 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
关于spring - 为 Spring MVC 创建和运行 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50841674/