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

我有一个图像(Docker)的Java WAR文件,并且正在Tomcat(Docker)容器中启动。 由于编码改变,WAR也会改变。 我想要做以下事情:

  1. 将Java代码更新更改为Git
  2. 有一个创build的WAR文件(从代码只是推到Git)
  3. 创build一个使用NEW WAR文件的新图像(Docker)
  4. 停止所有旧容器(运行旧图像)
  5. 重新启动容器(这将使用新的图像)

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

TIA

docker撰写可以帮助这个。 您可以为您的应用程序创build一个yml文件,并使用docker撰写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上,然后运行上面的命令即可。 它将创build基础映像并启动更新后的容器。

如果这不是你正在寻找的东西,你可以写一个BASH脚本来自动化这个过程。 让我知道你是否希望我把它张贴在这里。