#Dockerこんにちは、CircleCI芸人です。最近はローカル環境もboot2dockerを使ってDocker環境を構築して開発しています。扱うコンテナが増えてくるとdockerコマンドはオプションも多いし、なかなかつらたんな面が多いわけですが、そんなときの構成管理にはFigを使っています。fig.ymlを作ってコンテナを構成すればよいわけですが、これをローカルのみならずCircleCI上でもやれたらいいよねっていうTipsです。circle.ymlCircleCIでfigするにはcircle.ymlを整備するだけでOKです。重要なとこだけ説明するので、本質じゃない箇所は完全に省きます。machineフェーズmachineフェーズはビルドの序盤で走る、コンテナの設定やサービスの起動、ツールのインストール等を行うフェーズです。~/bin/figまずservicesでdockerを起動pre(postでも良いが)でfigの実行ファイルをGitHubから落としてきて保存して、実行権限あげるこれで準備完了dependenciesフェーズdependenciesフェーズはまさにビルドのためのフェーズです。-ddependenciesフェーズの本処理(preの後で実行される)が実際のビルド処理なので、その前に片付けておくべきタスクはpreに記述します。ここではpreでfigからDockerのコンテナを起動させて常駐させてます。up自体はDockerイメージさえダウンロードされればすぐ終わってしまいますが、Dockerコンテナでフォアグラウンドになってるプロセスが完全に準備完了になってないケースもある(起動に時間がかかるサーバ等)ので、それが完了せずに次のタスクでコンテナに依存するような処理を書くと準備できてなくて失敗することもあります。いうわけで、コンテナに乗るアプリケーションの特性に合わせて、必要に応じてsleepを数秒入れるとかっていう対応が必要になったりするので注意が必要ですね。いったかんでこんなTipsを今後もシェアしていきます。