Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker将WAR文件添加到Tomcat官方图像_Docker_Boot2docker_Dockerfile - Fatal编程技术网

Docker将WAR文件添加到Tomcat官方图像

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文

通过运行此命令,我为Tomcat提取了正式的Docker映像

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
    在停止容器后立即将其移除
  • -p
    将端口转发到主机(或者如果您使用boot2docker转发到此IP)
  • -它允许交互模式,因此您可以查看是否部署了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/