如何“重置”由docker-compose组成的系统服务?

时间:2019-11-20 14:47:20

标签: docker docker-compose systemd

我创建了一个systemd服务,该服务使用Docker-Compose启动了一组Docker容器,如this answer所述:

# /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

这使我可以使用来启动Docker-Compose服务

sudo systemctl start docker-compose-app

在引擎盖下使用docker-compose up -d,然后使用

关闭它们
sudo systemctl stop docker-compose-app

使用docker-compose down。请注意,down命令在运行时没有-v标志,这意味着卷将保留在原位,从而在重新启动/创建时保留了我的容器的数据。在大多数情况下,这就是我想要的。

在某些情况下,我想擦除服务中的所有数据,基本上是运行down -v命令,而不仅仅是运行down

有没有一种方法可以扩展上面的systemd服务定义,以允许其他命令(或使用现有的systemctl命令之一),使我偶尔可以运行{{1} } 如果需要的话。如果需要,我想临时执行此操作,而不是计划的或类似的操作。

我该如何跑步

down -v

有时是否需要通过相同的docker-compose down -v 设置,同时保留在重新启动后维护容器数据的标准功能?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用ExecReload定义:

ExecReload=/usr/local/bin/docker-compose down -v && /usr/local/bin/docker-compose up -d

然后您可以使用:

sudo systemctl reload docker-compose-app

因此,在这种情况下,“重载”命令将用于“重设”。