¿Cómo ejecutar docker-compose en el arranque?

20

Esto está en una máquina virtual Ubuntu 14.04 LTS ejecutando Docker y sospecho que respawn es la causa de mi problema, pero no estoy seguro de la solución ideal.

Script upstart 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 monitoreo con htop . Si eliminé la entrada de upstart ( sudo rm /etc/init/dockersuitecrm.conf ) y SSH manualmente y ejecuté docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start , no veo la CPU con el 100% de problemas y antes de que myapp vuelva a estar vivo y receptivo.

Entonces sospecho que la forma en que empiezo la compilación de docker arriba es incorrecta. ¿Cuál es la forma correcta de comenzar docker-compose siempre se está ejecutando sin intervención manual?

EDITAR: No debería importar, pero /usr/bin/myapp -> /home/batman/dockerapps/myapp como un enlace simbólico.

    
pregunta DeepSpace101 23.04.2015 - 16:54

2 respuestas

9

Simplemente use crontab, en lugar de usar un intervalo de tiempo simplemente diga @reboot

Inicie sesión como el usuario que debería iniciar este script y escriba el comando

crontab -e

y luego ingrese

@reboot /better/enter/fullpath/here/docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start

Reinicia el sistema y mira si funciona. Hay una ventaja sobre el upstart, incluso si se inicia un poco más tarde, ya no tienes que preocuparte por las dependencias como las redes, etc. para que ya esté listo.

    
respondido por el s1mmel 30.06.2016 - 06:03
1

Suponiendo que está utilizando la versión 2 de las definiciones de Docker Compose en docker-compose.yml , puede hacer lo siguiente:

Definir restart: always como tal:

version: '2'
services:
  web:
    image: nginx
    restart: always

Referencia: enlace

    
respondido por el Sergei Filippov 07.07.2017 - 10:57

Lea otras preguntas en las etiquetas