Docker 将 warfile 添加到官方 Tomcat 图像

Docker add warfile to official Tomcat image

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

docker run -it --rm tomcat:8.0

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

From tomcat8
ADD warfile /usr/local/tomcat

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

任何人都可以告诉我如何将我的 war 文件添加到官方 Tomcat images webapp 文件夹中。

阅读 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 允许交互模式,因此您可以查看是否已部署某些内容

如何查看 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

基于@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"]

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

docker 运行 -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 图像构建期间执行的 运行 命令。 例如,为 tomcat 授予对 webapps 文件夹的读写执行权限以解压缩 war 文件

    RUN chmod -R 777 $CATALINA_HOME/webapps 

还有一个命令是CMD。无论您在 CMD 命令中指定什么,它都会在容器 运行ning 的时间执行。您可以使用以逗号 (,) 分隔的双引号 (" ") 在 CMD 命令中指定选项。 例如

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

(注意:记住 运行 命令在镜像构建时执行,CMD 在 运行 宁容器时执行,这会让新用户感到困惑。

这是我的 Docker 文件 -

    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/