Quando usamos crontab
ou o /etc/rc.local
arquivo obsoleto , precisamos de um atraso (por exemplo sleep 10
, dependendo da máquina) para garantir que os serviços do sistema estejam disponíveis. Normalmente, systemd
(ou upstart
) é usado para gerenciar quais serviços iniciam quando o sistema é inicializado. Você pode tentar usar a configuração semelhante para isso:
# /etc/systemd/system/docker-compose-app.service
[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
Ou, se você quiser executar sem a -d
bandeira:
# /etc/systemd/system/docker-compose-app.service
[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
[Service]
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitIntervalSec=60
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
Altere o WorkingDirectory
parâmetro com o caminho do projeto encaixado. E habilite o serviço para iniciar automaticamente:
systemctl enable docker-compose-app
--restart always
ou--restart unless-stopped
ou em docker-compose.yml userestart: always
-> Ref . Mas talvez não funcione em alguns recipientes!