para hub compose docker docker-compose

compose - docker hub



¿Cómo ejecutar docker-compose up-d al inicio del sistema? (6)

Como una adición a la respuesta del user39544 , un tipo más de sintaxis para crontab -e :

@reboot sleep 60 && /usr/local/bin/docker-compose -f /path_to_your_project/docker-compose.yml up -d

Para permitir que los contenedores se inicien automáticamente en el punto de inicio, intenté agregar el comando:

cd directory_has_docker-compose.yml && docker-compose up -d en /etc/rc.local.

pero luego de reiniciar la máquina, los contenedores no funcionan.

¿Cómo ejecutar docker-compose up -d al inicio del sistema?


Cuando usamos crontab o el archivo /etc/rc.local desuso, necesitamos un retraso (por ejemplo, sleep 10 , dependiendo de la máquina) para asegurarnos de que los servicios del sistema estén disponibles. Por lo general, systemd (o upstart ) se usa para administrar qué servicios comienzan cuando se inicia el sistema. Puede intentar usar la configuración similar para esto:

# /etc/systemd/system/docker-compose-app.service [Unit] Description=Docker Compose Application Service Requires=docker.service After=docker.service [Service] Type=oneshot RemainAfterExit=yes WorkingDirectory=/srv/docker ExecStart=/usr/local/bin/docker-compose up -d ExecStop=/usr/local/bin/docker-compose down TimeoutStartSec=0 [Install] WantedBy=multi-user.target

O, si quieres correr sin la bandera -d :

# /etc/systemd/system/docker-compose-app.service [Unit] Description=Docker Compose Application Service Requires=docker.service After=docker.service [Service] WorkingDirectory=/srv/docker ExecStart=/usr/local/bin/docker-compose up ExecStop=/usr/local/bin/docker-compose down TimeoutStartSec=0 Restart=on-failure StartLimitIntervalSec=60 StartLimitBurst=3 [Install] WantedBy=multi-user.target

Cambie el parámetro WorkingDirectory con la ruta del proyecto dockerizado. Y permita que el servicio se inicie automáticamente:

systemctl enable docker-compose-app


Debería poder agregar:

restart: always

a todos los servicios que desea reiniciar en el archivo docker-compose.yml


Intenté restart: always , funciona en algunos contenedores (como php-fpm), pero enfrenté el problema de que algunos contenedores (como nginx) todavía no se reinician después del reinicio.

Resuelve el problema.

crontab -e @reboot (sleep 30s ; cd directory_has_dockercomposeyml ; /usr/local/bin/docker-compose up -d )&


Si su docker.service habilitado al iniciar el sistema

$ sudo systemctl enable docker

y sus servicios en su docker-compose.yml tiene

restart: always

todos los servicios se ejecutan cuando reinicia su sistema si ejecuta el siguiente comando solo una vez

docker-compose up -d


Utilice el reinicio: siempre en el docker componer archivo. Docker-compose up -d iniciará nuevamente el contenedor desde las imágenes. Use docker-compose start para iniciar los contenedores detenidos, nunca lanza nuevos contenedores a partir de imágenes.

nginx: restart: always image: nginx ports: - "80:80" - "443:443" links: - other_container:other_container

También puede escribir el código en el archivo acoplable para que se cree primero, si tiene la dependencia en otros contenedores.