Чтобы контейнеры автоматически запускались при запуске, я попытался добавить команду:
cd directory_has_docker-compose.yml && docker-compose up -d
в /etc/rc.local.
но затем после перезагрузки машины контейнеры не работают.
Как запустить docker-compose up -d
при запуске системы?
docker
docker-compose
user39544
источник
источник
--restart always
или--restart unless-stopped
или в docker-compose.yml используйтеrestart: always
-> Ссылка . Но, возможно, не сработало на некоторых контейнерах!Ответы:
Когда мы используем
crontab
или устаревший/etc/rc.local
файл, нам нужна задержка (напримерsleep 10
, в зависимости от машины), чтобы убедиться, что системные службы доступны. Обычноsystemd
(илиupstart
) используется для управления запуском служб при загрузке системы. Вы можете попробовать использовать для этого аналогичную конфигурацию:Или, если вы хотите запустить без
-d
флага:Измените
WorkingDirectory
параметр, указав путь к документированному проекту. И включите автоматический запуск службы:источник
systemctl start docker-compose-app
иsystemctl status docker-compose-app
я думаю, это то, что вы ищете.systemctl start docker-compose-app
столкнулся с этим:Job for docker-compose-app.service failed because the control process exited with error code. See "systemctl status docker-compose-app.service" and "journalctl -xe" for details
service docker-compose-app start
статус сservice docker-compose-app status
, остановка сservice docker-compose-app stop
Вы должны иметь возможность добавить:
для каждой службы, которую вы хотите перезапустить, в файле docker-compose.yml
источник
restart: always
есть несколько серьезных ошибок: например, при перезагрузке не будут прикреплены крепления хоста. На мой взгляд, велосипед лучше изобретать, если имеющееся колесо квадратное.Если ваш
docker.service
включен при запуске системыи ваши услуги в вашем
docker-compose.yml
естьвсе службы запускаются при перезагрузке системы, если вы запустите команду ниже только один раз
источник
Я пробовал
restart: always
, он работает в некоторых контейнерах (например, php-fpm), но я столкнулся с проблемой, что некоторые контейнеры (например, nginx) все еще не перезагружаются после перезагрузки.Решил проблему.
источник
Используйте перезапуск: всегда в вашем файле компоновки докеров.
Docker-compose up -d
снова запустит контейнер из образов. Используетсяdocker-compose start
для запуска остановленных контейнеров, никогда не запускает новые контейнеры из образов.Также вы можете написать код в файле докеров, чтобы он создавался первым, если он зависит от других контейнеров.
источник
always
, но возможноunless-stopped
. Другие варианты -on-failure
иno
. Это известно как политика перезапуска .В дополнение к
user39544
ответу еще один тип синтаксиса дляcrontab -e
:источник
crontab -e
как пользователь pi, а pi был членом группы docker ...