我对Tomcat和Docker非常陌生--所以我可能在这个问题的某个地方遗漏了Tomcat的基础知识。
我要做的是构建一个Docker容器,它运行一个只返回一些静态数据的SpringBoot Restful web服务。这些都是在OSX上运行的,所以我也在使用Boot2Docker。
我已经编写了自己的Dockerfile来构建运行我的应用程序的容器:
FROM tomcat:8.0.20-jre8
RUN mkdir /usr/local/tomcat/webapps/myapp
COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp/
这个Dockerfile运行得很好,我可以从创建的镜像启动容器。
docker build -t myapp .
docker run -it --rm -p 8888:8080 myapp
此容器正确启动,不会输出任何错误,并会显示一条消息,说明我的应用程序已部署。
22-Mar-2015 23:07:21.217 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory
Deploying web application directory /usr/local/tomcat/webapps/myapp
容器还正确地将myapp.war复制到Dockerfile文件中描述的路径。此外,我能够导航到Tomcat默认页面以确认Tomcat正在运行,我还可以点击所有示例,等等。
对于这个问题,当我导航到http://192.168.59.103:8888/myapp/getData时,我得到了404。我不太明白为什么。我是不是错过了一些关于.war部署到Tomcat的东西?
发布于 2015-03-27 17:54:47
您正在尝试将war
文件复制到webapps
下的目录中。应该将war文件复制到webapps
目录中。
删除mkdir命令,并复制war
文件,如下所示:
COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war
如果打开了autodeploy
,Tomcat将解压war。
发布于 2017-10-15 03:23:17
这里有一个用于这个的线条。
你可以简单地运行,
docker run -v /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war:/usr/local/tomcat/webapps/myapp.war -it -p 8080:8080 tomcat
这会将war文件复制到webapps目录,并立即让您的应用程序运行。
发布于 2015-11-20 18:40:16
Tomcat只会提取复制到webapps
目录中的war。如下所示更改Dockerfile
:
FROM tomcat:8.0.20-jre8
COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war
除非您指定了webroot,否则您可能需要按如下方式访问url
http://192.168.59.103:8888/myapp/getData
https://stackoverflow.com/questions/29201262
复制相似问题