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

时间:2016-12-22 09:40:15

标签: docker systemd

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

这是脚本文件/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启动服务时效果很好。 当我重新启动服务器时,它失败并且服务的状态变为非活动状态。

$ 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)

1 个答案:

答案 0 :(得分:1)

--restart=always命令有docker run选项,如果您在运行容器时没有一些特殊要求,我建议您这样做。

相同的概念适用于docker-compose

restart: always

策略:

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

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

sudo systemctl enable <service name>

更新

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

  

multi-user.target:多用户,非图形。用户通常可以登录   通过多个控制台或通过网络。