Pour laisser les conteneurs démarrer automatiquement au point de démarrage, j'ai essayé d'ajouter la commande:
cd directory_has_docker-compose.yml && docker-compose up -d
dans /etc/rc.local.
mais après avoir redémarré la machine, les conteneurs ne fonctionnent pas.
Comment fonctionner docker-compose up -d
au démarrage du système?
docker
docker-compose
user39544
la source
la source
--restart always
ou--restart unless-stopped
ou dans docker-compose.yml userestart: always
-> Ref . Mais peut-être pas travaillé sur certains conteneurs!Réponses:
Lorsque nous utilisons
crontab
ou le/etc/rc.local
fichier obsolète , nous avons besoin d'un délai (par exemplesleep 10
, selon la machine) pour nous assurer que les services système sont disponibles. Habituellement,systemd
(ouupstart
) est utilisé pour gérer les services qui démarrent au démarrage du système. Vous pouvez essayer d'utiliser la configuration similaire pour cela:Ou, si vous voulez courir sans le
-d
drapeau:Modifiez le
WorkingDirectory
paramètre avec le chemin de votre projet dockerisé. Et activez le service pour démarrer automatiquement:la source
systemctl start docker-compose-app
etsystemctl status docker-compose-app
c'est ce que vous cherchez je pense.systemctl start docker-compose-app
rencontré avec ceci:Job for docker-compose-app.service failed because the control process exited with error code. See "systemctl status docker-compose-app.service" and "journalctl -xe" for details
service docker-compose-app start
service docker-compose-app status
service docker-compose-app stop
Vous devriez pouvoir ajouter:
à chaque service que vous souhaitez redémarrer dans le fichier docker-compose.yml
la source
restart: always
a quelques bugs sérieux: les montages d'hôte ne seront pas attachés au redémarrage par exemple. À mon avis, il vaut mieux réinventer la roue, si la roue existante est carrée.Si votre
docker.service
activé au démarrage du systèmeet vos services dans votre
docker-compose.yml
atous les services s'exécutent lorsque vous redémarrez votre système si vous exécutez la commande ci-dessous une seule fois
la source
J'ai essayé
restart: always
, cela fonctionne sur certains conteneurs (comme php-fpm), mais j'ai rencontré le problème que certains conteneurs (comme nginx) ne redémarrent toujours pas après le redémarrage.Résolu le problème.
la source
Utilisez le redémarrage: toujours dans votre fichier de composition docker
Docker-compose up -d
lancera à nouveau le conteneur à partir d'images. Utilisédocker-compose start
pour démarrer les conteneurs arrêtés, il ne lance jamais de nouveaux conteneurs à partir d'images.Vous pouvez également écrire le code dans le fichier docker afin qu'il soit créé en premier, s'il a la dépendance d'autres conteneurs.
la source
always
, mais peut-êtreunless-stopped
. D'autres options sonton-failure
etno
. C'est ce qu'on appelle une politique de redémarrage .En complément de
user39544
la réponse de, un autre type de syntaxe pourcrontab -e
:la source
crontab -e
tant qu'utilisateur pi, avec pi un membre du groupe docker ...