systemd 服务因依赖关系失败

systemd 服务因依赖关系失败

在我的 ubuntu 16.04 服务器上,我编写了两个 systemd 服务,用于docker在系统重启时启动容器。其中,第一个服务加载完美。第二个服务依赖于第一个服务,但第一个服务从未执行过。但是,如果使用sudo systemctl start swoop.app.servicethen 手动运行第二个服务,它就可以正常工作。

这是第一个脚本

[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

第二个脚本是

[Unit]
Description=Swoop App Server container
Requires=docker.service
After=docker.service

Requires=swoop.mongo.service
After=swoop.mongo.service


[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/docker-compose -f /var/www/swoop/docker-compose.yml up -d app

Restart=always
RestartSec=10s
Type=notify
NotifyAccess=all

[Install]
WantedBy=local.target

为什么无法检测swoop.mongo.service服务是否已启动。

更新:

虽然 service1 docker 容器在启动后正在运行。Service1
状态

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

Service2 状态

$ 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

我已知道为什么这无法执行。

首先我需要启用服务作为
sudo systemctl enable swoop.mongo&&sudo systemctl enable swoop.app

另外,我必须WantedBy=local.target改为WantedBy=multi-user.target

相关内容