Вот мои две единицы:
- name: percona_db.service
command: start
enable: true
content: |
[Unit]
Description=Percona db
After=docker.service
Requires=docker.service
[Service]
ExecStartPre=/bin/bash -c '/usr/bin/docker start -a mysql_datastore || /usr/bin/docker run -d -v /var/lib/mysql --name mysql_datastore -p 23:23 busybox'
ExecStart=/bin/bash -c '/usr/bin/docker start -a mypercona || /usr/bin/docker run -i -t --volumes-from mysql_datastore --name="mypercona" -p 3306:3306 --rm percona'
ExecStop=/usr/bin/docker stop mypercona
[Install]
WantedBy=multi-user.target
- name: php_fpm.service
command: start
enable: true
content: |
[Unit]
Description=php fpm
After=percona_db.service
Requires=percona_db.service
[Service]
ExecStart=/bin/bash -c '/usr/bin/docker start -a myphpfpm_53 || /usr/bin/docker run --name myphpfpm_53 -dit -p 9000:9000 --link mypercona:db phpfpm_53'
ExecStop=/usr/bin/docker stop myphpfpm_53
[Install]
WantedBy=multi-user.target
Моя проблема заключается в следующем: контейнер докеров, запущенный percona_db.service, может иногда загружаться долго (если это первая загрузка, он создаст базу данных и добавит данные, это может занять некоторое время). Службе php_fpm требуется служба percona для запуска, поскольку я связываю их вместе. И, хотя я указал:
After=percona_db.service
Requires=percona_db.service
systemd пытается запустить службу phpfpm до завершения работы службы percona_db и выдает ошибку о том, что контейнер percona не существует :/.
Что я делаю не так? Или что я могу сделать, чтобы заставить его работать? (может быть, искусственно заставить службу phpfpm ждать? Возможно ли это с systemd?)
спасибо !
php_fpm.service
в списке/etc/systemd/system/multi-user.target.wants
или обаpercona_db.service
иphp_fpm.service
. Это не имеет значения, так какAfter=percona_db.service
вphp_fpm.service
должен управлять порядком, в котором они запускаются, если оба перечислены, но стоит попытаться удалитьpercona_db.service
изmulti-user.target.wants
, чтобы посмотреть, приведет ли это к правильному порядку. - person David C. Rankin   schedule 26.09.2014