0

我有一个图像 (Docker) 的 java WAR 文件,并且正在 Tomcat (Docker) 容器内启动。由于编码发生了变化,WAR 也会发生变化。我想做以下事情:

  1. 将java代码更新为Git
  2. 创建一个 WAR 文件(从刚刚推送到 Git 的代码)
  3. 创建一个使用 NEW WAR 文件的 NEW IMAGE (Docker)
  4. 停止所有旧容器(运行旧图像)
  5. 重新启动容器(将使用新图像)

我也在使用 Portainer。是否有一些我可以执行/运行的命令,以便可以自动运行第 4 项和第 5 项(无需人工干预)?有什么方法可以做到这一点吗?

TIA

4

1 回答 1

1

docker-compose可以对此有所帮助。您可以为您的应用程序创建一个 yml 文件,并根据需要使用 docker compose cli 启动新容器。例如,我有以下 yml 文件的基于 tomcat/mongo 的应用程序:

version: '3'

services:
  mongodb:
    image: mongo
    network_mode: host
  tomcat:
    build: 
      context: ./app
      dockerfile: DockerfileTomcat
    network_mode: host
    depends_on:
     - mongodb

文件夹布局为:

├── docker-compose.yml
└── app
    ├── DockerfileTomcat
    └── app.war

WhereDockerfileTomcat负责将 Tomcat 容器中的 war 文件复制为:

FROM tomcat:8.5-jre8

RUN rm -rf /usr/local/tomcat/webapps/*

COPY app.war /usr/local/tomcat/webapps/app.war

为了启动您的应用程序,您需要在包含以下内容的目录中运行以下命令docker-compose.yml

docker-compose up --build

每次只需将新的 war 文件复制到 app.war 上,然后运行上面的命令。它将创建基础映像并启动更新的容器。

如果这不是您正在寻找的东西,您可以编写一个 BASH 脚本来自动化该过程。如果你想让我把它贴在这里,请告诉我。

于 2017-05-10T13:58:28.723 回答