Это на виртуальной машине 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
в качестве символической ссылки.
Просто используйте crontab, вместо того, чтобы использовать интервал времени просто говорят, что @reboot
Так вход в систему как пользователь, который должен запустить этот сценарий и ввести команду
crontab -e
и затем войти
@reboot /better/enter/fullpath/here/docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
, Перезагружает систему и видит, работает ли это. Существует одно преимущество перед выскочкой, даже это оно запускается немного позже, Вы не должны волноваться очень о dependcies как сети, и т.д. уже чтобы произойти.
Принятие Вас использует версию 2 Докера, Составляют определения в Вас docker-compose.yml
, можно сделать следующее:
Определение restart: always
как так:
version: '2'
services:
web:
image: nginx
restart: always
Ссылка: https://docs.docker.com/compose/compose-file/compose-file-v2 /
Докер сразу не готов, Если Вы запустите скрипт слишком рано, то ничего не произойдет. Докер начнет отвечать на команду PS докера, как только это готово, таким образом, можно использовать этот прием в crontab:
нано/etc/crontabs/root
@reboot/usr/bin/docker ps & &/usr/bin/docker-compose-f/prod.yml запускаются