Lorsque nous utilisons crontab
ou l'option dépréciée /etc/rc.local
nous avons besoin d'un délai (par ex. sleep 10
selon la machine) pour s'assurer que les services du système sont disponibles. Habituellement, systemd
(ou upstart
) est utilisé pour gérer les services qui démarrent au démarrage du système. Vous pouvez essayer d'utiliser une configuration similaire pour cela :
# /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, si vous voulez fonctionner sans le -d
drapeau :
# /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
Changez le WorkingDirectory
avec le chemin de votre projet dockerisé. Et activez le service pour qu'il démarre automatiquement :
systemctl enable docker-compose-app
7 votes
Utiliser
--restart always
o--restart unless-stopped
ou dans docker-compose.yml utiliserrestart: always
--> Réf. . Mais peut-être pas sur certains conteneurs !