28

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

docker run -it --rm tomcat:8.0

通过使用它作为基础图像,我需要在文件夹中构建包含我的战争文件的新图像tomcat webapps。我像这样创建了 Dockerfile。

From tomcat8
ADD warfile /usr/local/tomcat

当我通过构建映像运行这个 Dockerfile 时,我看不到 Tomcat 的首页。

谁能告诉我如何将我的战争文件添加到官方 Tomcat 图像 webapp 文件夹中。

4

5 回答 5

70

从 repo 的文档中阅读你会做类似的事情

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允许交互模式,因此您可以查看是否部署了某些东西
于 2015-01-07T13:16:48.467 回答
24

基于@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。

于 2015-03-27T00:42:06.677 回答
3

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

战争文件夹包含要部署的战争

于 2016-07-19T15:07:24.673 回答
2

你如何检查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
于 2015-01-23T07:58:04.937 回答
1

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

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

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

    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/
于 2020-01-31T10:19:09.350 回答