我对Tomcat和Docker非常陌生-因此我很可能在这个问题的某个地方缺少Tomcat基本知识。
我正在尝试做的是构建一个运行SpringBoot Restful Web服务的Docker容器,该服务仅返回一些静态数据。这些都在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的内容?
您正在尝试将war文件复制到下面的目录中webapps。战争文件应复制到webapps目录中。
war
webapps
删除mkdir命令,然后war像这样复制文件:
COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war
如果autodeploy打开,Tomcat将提取战争信息。
autodeploy