我有一个Java WAR文件,它是一个Image(Docker),正在Tomcat(Docker)容器中启动。由于编码改变,WAR也会改变。我想做以下事情:
我也在使用Portainer。是否有一系列命令可以执行/运行,以便项目#4和项目#5可以自动运行(无需人工干预)?有什么办法可以做到这一点吗?
TIA
答案 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脚本来自动执行该过程。如果您希望我在此发布,请告诉我。