spring - 为 Spring MVC 创建和运行 docker 镜像

标签 spring windows spring-mvc docker tomcat

我想将带有 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/

相关文章:

java - 如何解决Java中POST和GET不支持警告?

python - 将少量 python 嵌入到批处理脚本中

java - Spring MVC Controller 响应作为静态内容缓存在浏览器中

security - 网络安全 : Preventing CSRF attack

java - Spring——解耦与性能

java - Spring boot + Spring security with AspectJ 不工作

c - 使用 CreateProcess,无法获取 CREATE_NO_WINDOW 来抑制控制台

javascript - 当 Controller 返回空结果时,如何在jsp中显示空值?

spring - 使用 Hibernate 使用外键 (where) 查询数据库表

windows - 如何在VS代码任务中获取时间戳?