docker-compose をSystemdのDaemonとして動かす方法

docker-composeをsystemctl systemdで起動する

docker-composeでささっと開発環境を作るところまではスムーズにできるけど、
複数人でステージング環境が入ったりすると、systemdで動かせるようにしたい要望もちらほらではじめる。

いや、Kubernetesじゃん?って思う?
いやいやいやいや!!
ケース・バイ・ケース(笑)!!docker-composeでも一応やっとこ!笑
貧弱インフラマンには、ステージングからKubernetesは無理です(T_T)

広告

systemclt start docker-compose-app 的に動かせるようにする

手順は下記の流れです。
とりあえず、rootで実行してください。

  1. 作ったdocker-compose.ymlを/opt/srvに配置する
  2. myapp.serviceファイルを作成する
  3. /etc/systemd/system/に配置する
  4. systemctl で登録する

作ったdocker-compose.ymlを/opt/srvに配置する

例として、とりあえず、RailsのWebアプリと、SidekiqのWorkerアプリを作ります。
前ちらっと記事にしたやつを修正します。

Rails5 + Sidekiq + Redis + Postgresql + Nginx をdocker-composeで構築

Railsをweb、Sidekiqをworkerというサービスにして下記のファイルを作りました。

こやつを、/opt/srv配下に配置します。
ちなみにvolumesを使用しているので、Railsアプリのファイル群も
/opt/srvに配置してね、ファイルとか含めたimageの場合、volumeは使用しなくていいです。

ファイル構成はtreeでみるとこんな感じ。

myapp.serviceファイルを作成する

開発時とかは、docker-compose up -d で終わりではありますが
systemdで管理するため、serviceファイルをつくります。

こんな感じで大丈夫。
-p myappのところをそろえるようにね。
docker-compose build のときにも同様のパラメータを付与するようにね。

/etc/systemd/system/に配置する

つくったサービスファイルは/etc/systemd/system/に配置してね。

systemctl で登録する

最後は、systmctlでデーモンの登録をします。

これでおっけーー!
status確認もできるでー!

起動もできる

あとはcompose buildを忘れないようね。



じゃあね〜〜〜〜。