Docker将WAR文件添加到Tomcat官方图像
通过运行此命令,我为Tomcat提取了正式的Docker映像Docker将WAR文件添加到Tomcat官方图像,docker,boot2docker,dockerfile,Docker,Boot2docker,Dockerfile,通过运行此命令,我为Tomcat提取了正式的Docker映像 docker run -it --rm tomcat:8.0 通过使用此作为基本映像,我需要在tomcatwebapps文件夹中构建包含war文件的新映像。我创建了这样的Dockerfile From tomcat8 ADD warfile /usr/local/tomcat 当我通过构建图像运行Dockerfile时,我无法看到Tomcat的首页 有谁能告诉我如何将我的WAR文件添加到Tomcat images官方webapp文
docker run -it --rm tomcat:8.0
通过使用此作为基本映像,我需要在tomcat
webapps
文件夹中构建包含war文件的新映像。我创建了这样的Dockerfile
From tomcat8
ADD warfile /usr/local/tomcat
当我通过构建图像运行Dockerfile时,我无法看到Tomcat的首页
有谁能告诉我如何将我的WAR文件添加到Tomcat images官方webapp文件夹中。阅读回购协议的文档,你会这样做吗
FROM tomcat
MAINTAINER xyz
ADD your.war /usr/local/tomcat/webapps/
CMD ["catalina.sh", "run"]
然后用docker build-t yourName
并使用以下工具运行它:
docker run --rm -it -p 8080:8080 yourName
在停止容器后立即将其移除--rm
将端口转发到主机(或者如果您使用boot2docker转发到此IP)-p
-它允许交互模式,因此您可以查看是否部署了get
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
基于@daniel的回答,如果你想把你的战争部署到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"]
它删除现有的根webapp,将您的WAR复制到root.WAR文件名,然后执行tomcat。docker run-It--rm--name MYTOMCAT-p 8080:8080-v…/wars:/usr/local/tomcat/webapps/tomcat:8.0
其中wars文件夹包含要部署的war如果您使用的是spring mvc项目,那么您需要服务器来运行您的应用程序假设您使用tomcat,那么您需要应用程序使用的tomcat的基本映像,您可以通过FROM命令指定它 可以使用ENV命令设置环境变量 您还可以使用在Docker映像构建期间执行的RUN命令。 例如,授予webapps文件夹读写执行权限,以便tomcat解压缩war文件
RUN chmod -R 777 $CATALINA_HOME/webapps
还有一个命令是CMD。无论您在CMD命令中指定什么,它都将在容器运行时执行。可以使用逗号(,)分隔的双引号(“”)在CMD命令中指定选项。
乙二醇
(注意:请记住,在构建映像时运行命令execute,在运行容器时执行CMD execute,这对新用户来说很混乱)
这是我的文件-
FROM tomcat:9.0.27-jdk8-openjdk
VOLUME /tmp
RUN chmod -R 777 $CATALINA_HOME/webapps
ENV CATALINA_HOME /usr/local/tomcat
COPY target/*.war $CATALINA_HOME/webapps/myapp.war
EXPOSE 8080
CMD ["catalina.sh","run"]
使用命令创建图像
docker build -t imageName <path_of_Dockerfile>
docker images
使用命令运行映像
docker run -p 9999:8080 imageName
这里8080是tomcat端口,应用程序可以在9999端口上访问
尝试在上访问您的应用程序
localhost:9999/myapp/
我有一个疑问。在运行图像后,当我在ubuntu中签入tomcat webapps文件夹时,我看不到我的war文件。但在浏览器中,当我进入manager应用程序时,我会看到我的应用程序。它是如何工作的?如果代码中出现问题,我会检查tomcat日志。但是tomcat日志在此也是空的。如何检查webapps文件夹?webapps文件夹位于docker容器中。如果要访问webapps容器,可以在容器中装载主机目录,将其用作webapps文件夹。这样,您就可以访问文件而无需访问docker。详细信息请参见我可以看到前面的文件夹,如何访问war文件构建,我尝试了使用
localhost:8080/buildName
但没有显示,tomcat正在使用localhostRUN rm-rf$CATALINA_HOME/webapps/ROOT COPY./target/your-webapp-1.0-SNAPSHOT.war$CATALINA_HOME/webapps/ROOT.war
localhost:9999/myapp/