這裏是我的兩個單元之前完成:systemd不等待我的服務單位,以啓動下一個
- 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嘗試是finsihed percona_db服務之前啓動phpfpm服務,並拋出一個錯誤說Percona的容器犯規存在:/。
我在做什麼錯? 或者我能做些什麼來使它工作? (也許讓phpfpm服務人爲地等待?用systemd可以嗎?)
謝謝!
你有沒有在'/ etc/systemd /系統/多user.target.wants'或兩者'percona_db.service'和'php_fpm剛上市'php_fpm.service'。 service'。它應該沒有關係,因爲'php_fpm.service'中的'after = percona_db.service'應該控制它們在兩個列表中都被啓動的順序,但是值得嘗試從''percona_db.service''中刪除' multi-user.target.wants'來查看是否會強制正確排序。 – 2014-09-26 06:31:30