Как запустить docker-compose при загрузке?

18

Это на Ubuntu 14.04 LTS VM, работающем Docker, и я подозреваю, что respawn является причиной моей проблемы, но не уверен в идеальном решении.

Текущий сценарий выскочки ( 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

Это «работает» в том, что myapp является живым и отзывчивым, но /sbin/init занимает весь процессор, когда я отслеживаю htop . Если я удалю запись из выскочки ( sudo rm /etc/init/dockersuitecrm.conf ) и вручную запустил SSH и запустил docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start , я не вижу процессор с 100% -ой проблемой, и, как и прежде, myapp снова живое и отзывчивое.

Итак, я подозреваю, что способ, которым я начинаю сочинять докеры, неправильно. Каков правильный способ запуска docker-compose всегда работает без ручного вмешательства?

РЕДАКТИРОВАТЬ: не имеет значения, но /usr/bin/myapp -> /home/batman/dockerapps/myapp как символическая ссылка.

    
задан DeepSpace101 23.04.2015 в 18:54
источник

2 ответа

9

Просто используйте crontab, вместо использования интервала времени просто скажите @reboot

Итак, войдите в систему как пользователь, который должен запустить этот скрипт и введите команду

crontab -e

, а затем введите

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

Перезагрузите систему и посмотрите, работает ли она. Есть одно преимущество перед выскочкой, даже если он запускается немного позже, вам не нужно больше волноваться о таких зависимостях, как сетевое взаимодействие и т. Д..

    
ответ дан s1mmel 30.06.2016 в 08:03
0

Предполагая, что вы используете версии 2 определений Docker Compose у вас docker-compose.yml , вы можете сделать следующее:

Определение restart: always следующим образом:

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

Ссылка: Ссылка

    
ответ дан Sergei Filippov 07.07.2017 в 12:57