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

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

Текущий сценарий upstart (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. Если я удаляю запись из upstart (sudo rm /etc/init/dockersuitecrm.conf) и вручную запускаю SSH и запускаю docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start, я не вижу процессора на 100% и, как и раньше, myapp снова жив и отзывчив.

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

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

20
задан 23 April 2015 в 20:03

3 ответа

Просто используйте crontab, вместо того, чтобы использовать интервал времени просто говорят, что @reboot

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

crontab -e

и затем войти

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

, Перезагружает систему и видит, работает ли это. Существует одно преимущество перед выскочкой, даже это оно запускается немного позже, Вы не должны волноваться очень о dependcies как сети, и т.д. уже чтобы произойти.

9
ответ дан 24 April 2015 в 06:03

Принятие Вас использует версию 2 Докера, Составляют определения в Вас docker-compose.yml, можно сделать следующее:

Определение restart: always как так:

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

Ссылка: https://docs.docker.com/compose/compose-file/compose-file-v2 /

2
ответ дан 24 April 2015 в 06:03

Докер сразу не готов, Если Вы запустите скрипт слишком рано, то ничего не произойдет. Докер начнет отвечать на команду PS докера, как только это готово, таким образом, можно использовать этот прием в crontab:

нано/etc/crontabs/root

@reboot/usr/bin/docker ps & &/usr/bin/docker-compose-f/prod.yml запускаются

0
ответ дан 4 October 2019 в 18:52

Другие вопросы по тегам:

Похожие вопросы: