Fig で Libreboard 環境を構築してみた
前回 は Docker 上で Libreboard を動かしてみたが、今のところ Libreboard の開発は非常に活発で、更新を Docker コンテナに反映させるたびに長々としたコマンドを叩くのが不便に感じてきたため、 Fig を使って必要なコマンドなどをあらかじめ定義しておき、 fig build や fig up で楽に更新適用ができるようにしてみた。以下はその手順
- Fig をインストール。今回は手元のサーバが Gentoo だったので emerge で入れてしまったが、 Installing Fig を見る限り、他の環境でも簡単に導入できると思う
Fig の作業ディレクトリを適当に作成して移動する
mkdir fig_libreboard cd fig_libreboardfig.ymlを作成する。今回は下記のようにしてみたlibreboard: build: ../libreboard links: - mongo ports: - "5555:8080" environment: ROOT_URL: "http://libreboard.example.com" command: "sh -c 'export MONGO_URL=mongodb://$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/libreboard; /meteor-run.sh'" data: image: busybox volumes: - /data/db backup: image: busybox volumes_from: - data mongo: image: mongo volumes_from: - data entrypoint: mongodlibreboard,data,backup,mongoの 4 台構成になっている。それぞれの役割は、libreboardはアプリケーションを稼働させるコンテナ。先ほど作ったfig_libreboardと同一階層のlibreboardディレクトリにある Dockerfile を読み込んで Docker イメージを構築し、それを実行する。データストアとなる MongoDB コンテナとリンクして、起動時に環境変数経由で接続を行っている。dataは Managing data in containers - Docker Documentation で言うところのデータボリュームコンテナで、 MongoDB のデータを保持するためだけに使われている。mongoは実際に MongoDB が稼働するコンテナ。dataのボリュームに接続してデータをそこに保存している。backupは、dataからは/data/dbの中身が見えなかったため、確認作業などのために便宜上作成しておいたコンテナ。これがあると気軽にfig run --rm backup ls -al /data/dbなどと打って中身を確認したり、 tar でのバックアップ作業がやりやすくなる。が、特別稼働そのものには関係ないので、なくてもかまわない
といったところ。起動コマンドやポートの設定は 前回 のものを引き継ぐ形で指定している
上記設定ができたら、
fig upを実行してコンテナ群を起動する。初回はlibreboardコンテナ用のイメージのビルドが実行されるので、少しばかり時間がかかる。無事に起動してウェブブラウザで 5555 番ポートにアクセスしてログイン画面が出れば成功。バックグラウンドでの起動に切り替えたい場合は、いったんCtrl-cを入力してコンテナ群を停止し、改めてfig up -dで起動すればよい。Libreboard の更新があった場合は
fig buildを実行して Docker イメージを再作成する。イメージ作成に成功したらfig up -dを実行して環境を再起動すればよい
Fig を使うと、このような感じで一度 fig.yml を書くだけで、機能ごとに分割した複数のコンテナを保持しつつ、日常の操作は簡単な fig コマンドを実行するだけで済むようになる。今回の Libreboard に限らず、 Fig を使うことでホスト側の環境にあれこれ手を入れずとも気軽にウェブアプリケーションの実行環境を用意できるので、単一ホスト内で実行させたいウェブアプリケーションの管理には非常に優れていると思う