C'est sur un Ubuntu 14.04 LTS VM sous Docker et je soupçonne que respawn
est la cause de mon problème mais je ne suis pas sûr de la solution idéale.
Script de démarrage 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
Ce 'fonctionne' dans le myapp
est actif et réactif, mais /sbin/init
occupe tout le processeur lorsque je surveille avec htop
. Si je supprime l'entrée de upstart (Sudo rm /etc/init/dockersuitecrm.conf
) et SSH manuellement et exécute docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
, je ne vois pas le cpu à 100% et, comme auparavant, myapp
est à nouveau actif et réactif.
Donc, je soupçonne que la façon dont je commence à composer Docker ci-dessus est incorrecte. Quelle est la bonne façon de démarrer docker-compose
est toujours en cours d'exécution sans intervention manuelle?
EDIT: Cela ne devrait pas compter mais /usr/bin/myapp -> /home/batman/dockerapps/myapp
en tant que lien symbolique.
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
crontab -e
puis entrez
@reboot /better/enter/fullpath/here/docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
Redémarrez le système et voyez si cela fonctionne. Il y a un avantage par rapport au débutant, même s'il est démarré un peu plus tard, vous n'avez pas à vous soucier de dépendances telles que la mise en réseau, etc.
En supposant que vous utilisiez la version 2 de Docker Compose avec vous docker-compose.yml
, vous pouvez effectuer les opérations suivantes:
Définir restart: always
comme suit:
version: '2'
services:
web:
image: nginx
restart: always
Référence: https://docs.docker.com/compose/compose-file/compose-file-v2/
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 pour 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