systemd服务在重新启动时不运行

我写了一个systemd脚本,用于在ubuntu 16.04 LTS服务器中使用dcoker-compose启动dcoker-compose容器。

这是脚本文件/etc/systemd/system/swoop.mongo.service

 [Unit] Description=Swoop MongoDb Server container Requires=docker.service After=docker.service [Service] TimeoutStartSec=0 ExecStart=/usr/bin/docker-compose -f /var/www/swoop/docker-compose.yml up -d mongo3 mongo2 mongo1 mongosetup Restart=always RestartSec=10s Type=notify NotifyAccess=all [Install] WantedBy=local.target 

当我启动与sudo systemctl start swoop.mongo.service服务sudo systemctl start swoop.mongo.service它运作良好。 当我重新启动服务器时,它会失败,服务的状态将变为不活动状态。

 $ systemctl status swoop.app.service ● swoop.app.service - Swoop App Server container Loaded: loaded (/etc/systemd/system/swoop.app.service; disabled; vendor preset: enabled) Active: inactive (dead) 

有一个选项--restart=alwaysdocker run命令,如果你没有在运行容器的特殊要求,我会build议。

相同的概念适用于docker-compose

restart: always

政策:

  • no :不要在退出时自动重启容器。 这是默认的。
  • on-failure[:max-retries] :仅在容器以非零退出状态退出时重新启动。 (可选)限制Docker守护程序尝试重新启动的次数。
  • always :始终重新启动容器,无论退出状态如何。 当你总是指定的时候,Docker守护进程会尝试无限期地重启容器。 无论容器的当前状态如何,容器也将始终在守护进程启动时启动。
  • unless-stopped :始终重新启动容器,不pipe退出状态如何,但是如果容器之前已经处于停止状态,则不要在守护进程启动时启动它。

现在就您的systemd服务而言,您需要启用该服务,以便在reboots启动后自动reboots

sudo systemctl enable <service name>

更新:

您需要将WantedBy=local.targetreplace为WantedBy=multi-user.target

multi-user.target:多用户,非graphics。 用户通常可以通过多个控制台或通过networkinglogin。