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より早く再構築できるだけでだいぶ嬉しいし、なにより他の問題思いつかねえ。

 - プログラミング

336px




336px




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

  関連記事

no image
sudo gem install cocoapods –preしても0.36.0が使えないとき

最新のcocoapodsそのものはインストールされてる。 なので、podコマンドを実行するときに下記のようにバージョンを指定すれば一応使える。 …

no image
MecabをPythonから使いたい

ベイズ分類器を自分で作りたかった。 そのためには、文書を単語の集合に変換する必要がある。 …

no image
Mastodonインスタンス(お一人様用)を作り方メモ

Mastodonは運営の存在を気にせず罵詈雑言吐けるの便利そう。 自分用のインスタンス作ったので、便所の落書きしておく。 …

no image
RDSの特定のデータベースをダンプする

Publicly Accessibleがyesならどこからでも下記が実行可能。 …

no image
意識低いRuby on Rails再入門3

ActionViewを使ってModelクラスの新規作成画面を作りたい。 ウェブアプリ上でModelのクラスを作成する。 …

no image
単語の出現頻度をlinuxコマンドだけで調べたい

無駄にpythonとか使おうとしてた。。 楽にできて良かった。 …

Dockerでよく使うコマンド

随時追加 Contents1 …

no image
YosemiteでRubyMineが起動できない

yosemiteからjavaが1.7系になってる。 一方、rubymineは1.6系を想定している。 …

ReactNativeでGiphyのデータを表示する

まずは下記をサクッとパクってみる。 当方、比較的AndroiderなのでAndroidで。 …

Chef::Exceptions::ChecksumMismatch:というエラーの対処

今頃になってChefの話。 チェックサムの形式をミスってる可能性がある。 …