![](/img/trans.png)
[英]Connect to Postgres as SystemD service from docker-compose
[英]How to “reset” a docker-compose systemd service?
我创建了一个systemd
服务,它使用 Docker-Compose 启动一组 Docker 容器,如本答案所述:
# /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
命令之一),如果需要,我可以偶尔运行down -v
。 如果需要,我想临时做这个,而不是计划或类似的。
我怎么能跑
docker-compose down -v
偶尔如果需要通过相同的systemd
设置,同时保持跨重启维护容器数据的标准功能?
您可以尝试使用ExecReload
定义:
ExecReload=/usr/local/bin/docker-compose down -v && /usr/local/bin/docker-compose up -d
然后你可以使用:
sudo systemctl reload docker-compose-app
因此,在这种情况下,“reload”命令将用于“reset”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.