C'est sur une machine virtuelle Ubuntu 14.04 LTS exécutant Docker et je pense que respawn
c'est la cause de mon problème mais je ne suis pas sûr de la solution idéale.
Script parvenu actuel ( cat /etc/init/dockersuitecrm.conf
)
description "Start docker containers"
author "Batman"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
end script
Cela `` fonctionne '' en ce qu'il myapp
est vivant et réactif, mais /sbin/init
prend tout le processeur lorsque je surveille htop
. Si je supprime l'entrée de upstart ( sudo rm /etc/init/dockersuitecrm.conf
) et SSH manuellement et que docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
je lance, je ne vois pas le processeur à 100% et comme avant, il myapp
est à nouveau vivant et réactif.
Je soupçonne donc que la façon dont je démarre la composition de docker ci-dessus est incorrecte. Quelle est la bonne façon de démarrer docker-compose
fonctionne toujours sans intervention manuelle?
EDIT: ne devrait pas avoir d'importance, mais /usr/bin/myapp -> /home/batman/dockerapps/myapp
comme un lien symbolique.
respawn
commande dans le script.docker-compose start
.script
bloc. Peut-être que cela fait partie du problème? J'aichdir /usr/bin/myapp/
et sur la ligne suivante à laexec docker-compose up
place.docker-compose up -d
Réponses:
Utilisez simplement crontab, au lieu d'utiliser un intervalle de temps, dites simplement @reboot
Alors connectez-vous en tant qu'utilisateur qui doit démarrer ce script et tapez la commande
puis entrez
Redémarrez le système et voyez si cela fonctionne. Il y a un avantage par rapport à upstart, même s'il est démarré un peu plus tard, vous n'avez pas à vous soucier beaucoup des dépendances comme la mise en réseau, etc. pour être déjà opérationnel.
la source
En supposant que vous utilisez la version 2 des définitions Docker Compose en vous
docker-compose.yml
, vous pouvez effectuer les opérations suivantes:Définir
restart: always
ainsi:Référence: https://docs.docker.com/compose/compose-file/compose-file-v2/
la source
Docker n'est pas prêt immédiatement Si vous exécutez le script trop tôt, rien ne se passera. Le docker commencera à répondre à la commande docker ps dès qu'il sera prêt afin que vous puissiez utiliser cette astuce dans crontab:
nano / etc / crontabs / root
@reboot / usr / bin / docker ps && / usr / bin / docker-compose -f /prod.yml start
la source