Chr*_*ris 56 java tomcat war docker spring-boot
我是Tomcat和Docker的新手 - 所以我可能在这个问题的某个地方错过了一个Tomcat基础.
我想要做的是构建一个运行SpringBoot Restful Web服务的Docker容器,该服务只返回一些静态数据.这一切都在OSX上运行,所以我也在使用Boot2Docker.
我编写了自己的Dockerfile来构建我的app运行的容器:
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/
Run Code Online (Sandbox Code Playgroud)
这个Dockerfile工作正常,我可以从创建的图像启动容器.
docker build -t myapp .
docker run -it --rm -p 8888:8080 myapp
Run Code Online (Sandbox Code Playgroud)
此容器正确启动并且不输出任何错误,并显示消息说我的应用程序已部署.
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
Run Code Online (Sandbox Code Playgroud)
容器也正确地将myapp.war复制到Dockerfile中描述的路径.此外,我能够导航到Tomcat默认页面以确认Tomcat正在运行,我还可以点击所有示例等.
对于这个问题,当我导航到http://192.168.59.103:8888/myapp/getData时,我得到了404.我无法弄清楚原因.我错过了关于.war部署到Tomcat的内容吗?
小智 64
您正在尝试将war文件复制到下面的目录中webapps.war文件应该复制到webapps目录中.
删除mkdir命令,然后war像这样复制文件:
COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war
Run Code Online (Sandbox Code Playgroud)
如果autodeploy打开,Tomcat将提取战争.
小智 18
这个有一个oneliner.
你可以简单地跑,
docker run -v /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war:/usr/local/tomcat/webapps/myapp.war -it -p 8080:8080 tomcat
Run Code Online (Sandbox Code Playgroud)
这会将war文件复制到webapps目录并立即运行您的应用程序.
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
Run Code Online (Sandbox Code Playgroud)
除非您指定了webroot,否则您可能需要访问以下URL
http://192.168.59.103:8888/myapp/getData
| 归档时间: |
|
| 查看次数: |
100241 次 |
| 最近记录: |