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