Пусть контейнеры автозапуск в момент запуска, я пытался добавить команду:
диск directory_has_docker-пишите.в формате YML && докер-сочинять до -Д ` в /etc/rc автомобиль.местные.
но потом после перезагрузки машины, контейнеры не работают.
Как запустить докер-сочинять вверх -Д` при запуске системы?
Когда мы используем кронтаб или устаревшие
в/etc/rc автомобиль.локальный файл, нам нужна задержка (например, сон 10, в зависимости от машины), чтобы убедиться, что сервисы системы доступны. Как правило,
systemd в(или
выскочка`) используется, чтобы управлять тем, какие службы запускаются при загрузке системы. Вы можете попробовать использовать аналогичную конфигурацию для этого:
в
# /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
Или, если вы хотите работать без флага -д
:
в
# /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
Изменение WorkingDirectory параметр с dockerized путь проекта. И включите службу автоматического запуска:
в
systemctl enable docker-compose-app
Вы должны быть в состоянии добавить:
restart: always
для каждого сервиса нужно перезагрузить в докер-сочинять.файл YML
Если ваш `докер.услуга активна при запуске системы
$ sudo systemctl enable docker
и ваши услуги в докер-сочинять.в формате YML` имеет
restart: always
все службы запускаются при перезагрузке системы, если вы запустите следующую команду только один раз
docker-compose up -d
Я попробовал перезагрузка: всегда
, он работает в какой-то емкости(например, PHP-МПФ), но я столкнулся с проблемой, что некоторые контейнеры(например, nginx), который до сих пор не перезагрузки после перезагрузки.
Решил проблему.
crontab -e
@reboot (sleep 30s ; cd directory_has_dockercomposeyml ; /usr/local/bin/docker-compose up -d )&
Использовать перезагрузка: всегда в докер сочинять файла.
Докер-сочинять вверх -Д
будет запущен контейнер с изображения. Используйте докер-сочинять Start
, чтобы запустить остановленные контейнеры, она никогда не запускает новые контейнеры с изображениями.
nginx:
restart: always
image: nginx
ports:
- "80:80"
- "443:443" links:
- other_container:other_container
Также вы можете записать код в файл Docker, так что он создается во-первых, если это имеет зависимость от других контейнеров.
Как дополнение к user39544
'ы ответ, еще один тип синтаксиса для кронтаб -е
:
@reboot sleep 60 && /usr/local/bin/docker-compose -f /path_to_your_project/docker-compose.yml up -d