在Portainer(?)

时间:2017-05-10 13:03:53

标签: image docker containers restart

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

  1. 将java代码更新更改为Git
  2. 创建一个WAR文件(从代码推送到Git)
  3. 创建一个使用NEW WAR文件的新图像(Docker)
  4. 停止所有旧容器(运行旧图像)
  5. 重新启动容器(将使用新图像)
  6. 我也在使用Portainer。是否有一系列命令可以执行/运行,以便项目#4和项目#5可以自动运行(无需人工干预)?有什么办法可以做到这一点吗?

    TIA

1 个答案:

答案 0 :(得分:1)

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

Private Sub CreateAllDirectories(ByVal strFileList As String)
    Dim strDirectories As String() = File.ReadAllLines(strFileList)

    For Each strDirectory As String In strDirectories
        If Not Directory.Exists(strDirectory) Then
            Directory.CreateDirectory(strDirectory)
        End If
    Next
End Sub

文件夹布局为:

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 负责将tomcat容器中的war文件复制为:

DockerfileTomcat

要启动应用程序,您需要在包含FROM tomcat:8.5-jre8 RUN rm -rf /usr/local/tomcat/webapps/* COPY app.war /usr/local/tomcat/webapps/app.war

的目录中运行以下命令
docker-compose.yml

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

如果这不是您正在寻找的东西,您可以编写一个BASH脚本来自动执行该过程。如果您希望我在此发布,请告诉我。