Esto está en una máquina virtual Ubuntu 14.04 LTS con Docker y sospecho que respawn
es la causa de mi problema, pero no estoy seguro de la solución ideal.
Script de inicio actual ( 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
Esto 'funciona' porque myapp
está vivo y responde, pero /sbin/init
ocupa toda la CPU cuando monitorizo htop
. Si elimino la entrada de upstart ( sudo rm /etc/init/dockersuitecrm.conf
) y manualmente SSH y la ejecuto docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
, no veo la CPU al 100% de problemas y, como antes, myapp
vuelve a estar activa y receptiva.
Entonces sospecho que la forma en que estoy comenzando Docker-compose es incorrecta. ¿Cuál es la forma correcta de comenzar docker-compose
siempre funcionando sin intervención manual?
EDITAR: No debería importar sino /usr/bin/myapp -> /home/batman/dockerapps/myapp
como un enlace simbólico.
respawn
comando en el script.docker-compose start
.script
bloque. Tal vez eso es parte del problema? Tengochdir /usr/bin/myapp/
y en la siguiente línea en suexec docker-compose up
lugar.docker-compose up -d
Respuestas:
Simplemente use crontab, en lugar de usar un intervalo de tiempo, simplemente diga @reboot
Inicie sesión como el usuario que debe iniciar este script y escriba el comando
y luego ingrese
Reinicie el sistema y vea si funciona. Hay una ventaja sobre el arranque, incluso si se inicia un poco más tarde, no tiene que preocuparse mucho por las dependencias como las redes, etc. para estar listo.
fuente
Suponiendo que está utilizando la versión 2 de las definiciones de Docker Compose en usted
docker-compose.yml
, puede hacer lo siguiente:Definiendo
restart: always
así:Referencia: https://docs.docker.com/compose/compose-file/compose-file-v2/
fuente
Docker no está listo de inmediato. Si ejecuta el script demasiado pronto, no pasará nada. El docker comenzará a responder al comando docker ps tan pronto como esté listo para que pueda usar este truco en crontab:
nano / etc / crontabs / root
@reboot / usr / bin / docker ps && / usr / bin / docker-compose -f /prod.yml start
fuente