systemd service falhou com dependência

1

No meu servidor ubuntu 16.04, escrevi dois serviços systemd para iniciar docker containers na reinicialização do sistema. fora deles, o inicial carrega perfeitamente. O segundo serviço depende do primeiro serviço que nunca é executado. No entanto, se executar o segundo serviço manualmente com sudo systemctl start swoop.app.service , ele funcionará bem.

aqui está o primeiro script

[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

e o segundo script é

[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

Por que não é possível detectar swoop.mongo.service service iniciado ou não.

Atualização:

Embora o contêiner do docker service1 esteja em execução após a inicialização.
Status do 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)

status do 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)
    
por Ankit Balyan 22.12.2016 / 07:28

1 resposta

0

Eu descobri por que isso não estava sendo executado.

Primeiro, preciso ativar os serviços como% sudo systemctl enable swoop.mongo & amp; & amp; sudo systemctl enable swoop.app

Além disso, tenho que alterar WantedBy=local.target para WantedBy=multi-user.target .

    
por Ankit Balyan 22.12.2016 / 15:07