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

  関連記事

logo_og
ReactとFluxとReduxについて順を追って整理する

書き途中 Contents1 …

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

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

no image
Bower再入門

Contents1 Bowerとは何なのか2 …

no image
開発で詰まったときにググるキーワード

そもそも公式サイトやソースコード、テストコード、githubなどのissueを読む 基本的には1ヶ月から1年以内の回答しか見ないようにする …

no image
gitであまり使わないけど知らないと困るコマンド一覧

随時追加 originのURLを変更したい …

no image
Androidアプリを作るために最低限必要な知識と未知の部分を列挙

作りたいアプリによって必要な知識は変わるかもしれないが。。 個人的過ぎて役に立たないが、整理がてら羅列してみる。 …

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

整理がてらメモ。 Contents1 …

no image
Androidアプリを実機デバッグしたいのにNo debuggable applicationsと表示される時の対処例

Tools > …

no image
SeleniumでChromeを自動操作したい

Seleniumという便利なソフトウェアがあります。 これはブラウザ上の操作をスクリプト化し自動化することを目的としています。 …

no image
RubyとSeleniumを使って自動で画像をダウンロードする

Contents1 はじめに2 …