コンテナ

upstartからdocker-composeを起動する。

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が気になりますが…

コメント

  1. jkawamoto より:

    docker-compose に -d オプションは要らないと思います.デタッチしてしまうと exec が終わってしまうので,ステータスが stop/waiting になるような気がします.

  2. ksaito11 より:

    jkawamotoさん
    指摘の通りsystemdの場合、-dは必要ありませんでした。
    ありがとうございました。

タイトルとURLをコピーしました