繁体   English   中英

当 Portainer(?) 中的图像更改时重新启动 Docker 容器(自动)

[英]Restart Docker Container (Automatically) when Image changes in Portainer(?)

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

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

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

TIA

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

DockerfileTomcat负责在 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 脚本来自动化该过程。 如果你想让我把它贴在这里,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM