docker-composeで構築したサーバ一式をUbuntu 14.04のupstartで自動起動する方法です。
upstartにサービスを追加
upstartは、/etc/init
にサービス名.confという設定ファイルを追加します。
$ cat -n /etc/init/docker-zabbix.conf; echo 1 start on started docker 2 exec /usr/local/bin/docker-compose -f /home/ubuntu/git/zabbix/docker-compose.yml up -d $
1行目のstart on started docker
でdockerが起動したら実行するように指定します。
2行目にdocker-composeを実行します。-f
オプションでdocker-compose.yml
ファイルを指定するのがポイントです。
起動
dockerサービスを起動する前の状態は、以下の通りです。
$ initctl status docker; initctl status docker-zabbix docker stop/waiting docker-zabbix stop/waiting $
dockerサービスが起動すると一緒に起動します。
$ sudo initctl start docker docker start/running, process 27922 $ initctl status docker; initctl status docker-zabbix; docker-compose -f /home/ubuntu/git/zabbix/docker-compose.yml ps docker start/running, process 27922 docker-zabbix stop/waiting Name Command State Ports --------------------------------------------------------------------------------------------------------------------------------------------------- zabbix /config/bootstrap.sh Up 0.0.0.0:10051->10051/tcp, 0.0.0.0:10052->10052/tcp, 0.0.0.0:12345->12345/tcp, 162/udp, 0.0.0.0:80->80/tcp zabbixdb /run.sh Up 3306/tcp $
追加したサービスのステータスがstop/waiting
が気になりますが…
コメント
docker-compose に -d オプションは要らないと思います.デタッチしてしまうと exec が終わってしまうので,ステータスが stop/waiting になるような気がします.
jkawamotoさん
指摘の通りsystemdの場合、-dは必要ありませんでした。
ありがとうございました。