Docker将warfile添加到官方Tomcat映像中

我通过运行这个命令,为Tomcat提供了正式的Docker镜像。

docker run -it --rm tomcat:8.0 

通过使用这个作为基础的形象,我需要build立新的图像,包含我的战争文件在tomcat webapps文件夹。 我创build了这样的Dockerfile。

 From tomcat8 ADD warfile /usr/local/tomcat 

当我通过构build映像来运行这个Dockerfile时,我无法看到Tomcat的首页。

任何人都可以告诉我如何将我的warfile添加到官方的Tomcat图像webapp文件夹。

从回购的文件中阅读,你会做这样的事情

 FROM tomcat MAINTAINER xyz ADD your.war /usr/local/tomcat/webapps/ CMD ["catalina.sh", "run"] 

然后使用docker build -t yourName <path-to-dockerfile>构build你的图像

并运行它:

 docker run --rm -it -p 8080:8080 yourName 
  • --rm在您停止时立即移除容器
  • -p将端口转发到您的主机(或者如果您使用boot2docker到此IP)
  • -it允许交互模式,所以你看看是否得到部署

build立在@丹尼尔的答案,如果你想要部署你的战争的根tomcat,我做到了这一点:

 FROM tomcat:7-jre7 MAINTAINER xyz RUN ["rm", "-fr", "/usr/local/tomcat/webapps/ROOT"] COPY ./target/your-webapp-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war CMD ["catalina.sh", "run"] 

它删除现有的根web应用程序,将您的WAR复制到ROOT.war文件名,然后执行tomcat。

你如何检查webapps文件夹?

webapps文件夹位于docker容器内。 如果你想访问你的webapps容器,你可以在你的容器中安装一个主机目录,把它用作webapps文件夹。 这样,你可以访问文件,而无需访问docker。 详情见这里

要访问你的日志,你可以做到这一点,当你运行你的容器,例如

 docker run -rm -it -p 8080:8080 **IMAGE_NAME** /path/to/tomcat/bin/catalina.sh && tail -f /path/to/tomcat/logs 

或者你开始你的docker集装箱,然后做一些事情:

 docker exec -it **CONTAINER_ID** tail -f /path/to/tomcat/logs 

docker run -it –rm –name MYTOMCAT -p 8080:8080 -v … / wars:/ usr / local / tomcat / webapps / tomcat:8.0

战争文件夹包含战争部署