Docker将warfile添加到官方Tomcat映像

时间:2015-01-07 11:48:54

标签: docker boot2docker dockerfile

我通过运行此命令为Tomcat提取了官方Docker镜像。

docker run -it --rm tomcat:8.0

通过将其用作基本图像,我需要在tomcat webapps文件夹中构建包含war文件的新图像。我像这样创建了Dockerfile。

From tomcat8
ADD warfile /usr/local/tomcat

当我通过构建图像运行此Dockerfile时,我无法看到Tomcat首页。

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

5 个答案:

答案 0 :(得分:65)

从回购文件中读取,你会做那样的事情

FROM tomcat
MAINTAINER xyz

ADD your.war /usr/local/tomcat/webapps/

CMD ["catalina.sh", "run"]

然后使用docker build -t yourName <path-to-dockerfile>

构建您的图片

运行它:

docker run --rm -it -p 8080:8080 yourName
  • --rm会在您停止后立即删除容器
  • -p将端口转发给您的主机(或者如果您将boot2docker用于此IP)
  • -it允许交互模式,因此您可以查看是否部署了某些内容

答案 1 :(得分:20)

在@ daniel的答案的基础上,如果你想将你的WAR部署到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。

答案 2 :(得分:2)

如何查看webapps文件夹?

webapps文件夹位于docker容器中。 如果要访问webapps容器,可以在容器中安装主机目录,以将其用作webapps文件夹。这样您就可以访问文件而无需访问docker。 详情请见here

要访问日志,您可以在运行容器时执行此操作,例如

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

答案 3 :(得分:2)

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

其中wars文件夹包含要部署的战争

答案 4 :(得分:1)

如果您正在使用spring mvc项目,那么您需要服务器运行您的应用程序,假设您使用的是tomcat,那么您需要您的应用程序使用的tomcat的基本映像,您可以通过FROM命令指定该映像。

您可以使用ENV命令设置环境变量。

您还可以使用RUN命令,该命令在Docker映像构建期间执行。 例如,授予webapps文件夹读写权限,以使Tomcat解除War文件的压缩

    RUN chmod -R 777 $CATALINA_HOME/webapps 

另外一个命令是CMD。无论您在CMD命令中指定什么内容,它都会在容器运行时执行。您可以使用双引号(“”)以逗号(,)分隔,以在CMD命令中指定选项。 例如

    CMD ["catalina.sh","start"]

(注意:请记住,在创建映像时执行RUN命令,在运行容器时执行CMD,这会使新用户感到困惑)。

这是我的Dockerfile-

    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映像

    docker images

使用命令运行图像

    docker run -p 9999:8080 imageName

这里8080是tomcat端口,应用程序可以在9999端口上访问

尝试通过

访问您的应用程序
    localhost:9999/myapp/