moxt

Just another Blog site

Docker導入したらどうするの?

      2015/07/03

Dockerを導入したけど、nginxが入った環境がどこでも使えるようになった!程度だったらあんま意味ないよね。

Web開発をする上でDockerをどのように使うのが効果的か考えてみる。

アプリ開発中とDocker

Macのローカル環境や会社から与えられた開発用仮想サーバで開発をして、ブラウザで確認して、差分をcommitして…みたいなことを普段やってるはず。

じゃあ、Dockerを導入することで開発効率が上がること、逆に下がることがあるのか。
ここを考えてみましょう。

環境依存問題

開発環境では動いてたんだけどステージングにデプロイしたら動かねえなあ。みたいな比較的あるある問題。
Dockerの良いところは環境をコンテナという単位で管理できること。
で、コンテナはDockerがある環境でさえあればどこでも動作してくれる。
必要なライブラリや設定ファイルをDockerfileに記述しておけば、それをビルドしてイメージを実行することで誰でも同じ環境でアプリケーションを動かすことができる。

問題もある。開発環境といっても開発者全員が使うようなライブラリの管理システムといった共有で使うべきツールとエディタといったかなりパーソナライズされたツールが混在してる。

1人で開発する場合、Docker内にいつも使ってるエディタはgitのバージョン管理用ソフトなどなど…導入することは何も問題ない。
2人以上の開発者が共通のコンテナで作業するとなると話は変わってくる。
同じVimだとしても人によって全然違うキーバインディングだったりする。
これらを1つのDockerfileで管理することはムリだろう。。

どうやって対応するか。

1つめ、共通コンテナ+個人コンテナという方法
アプリケーションが動作する環境は共通コンテナを使用する。
この共通コンテナをFROMで継承し、個人が使うツールを導入するための命令を追加する。という方法。

2つめ、SharedFolderを使う方法(mac)
Docker 1.3からboot2dockerで使われてるVMでも共有フォルダが使えるようになった。
コードが格納されてるフォルダを共有フォルダとして指定してあげればMac側のターミナルやIDEでの変更がコンテナにも同期される。便利すねー。

http://qiita.com/mopemope/items/495ab1f74bcbef0f88bb#2-5

このDockerfile参考になりますね。

その他

開発環境をVagrantより早く再構築できるだけでだいぶ嬉しいし、なにより他の問題思いつかねえ。

 - プログラミング

  • このエントリーをはてなブックマークに追加
  • follow us in feedly