Dockerで開発環境管理

docker

概要

様々なバージョンのEC-CUBEを動作確認出来るDocker imageを作りました。
https://github.com/matsubo/eccube-docker

背景

仕事で作っているプロダクトが、様々な環境で動作することを確認でき、開発者が簡単に運用できる状態を作りたい。

アプローチ

ざっくりと以下の手法が考えられる。もちろん排他的では無く、一部は組み合わせも可能。

  • VirtualBoxのVMを共有
    • EC2のAMIで保持
  • Dockerイメージ
  • Dockerfile
  • Vagrant

今回は、「LAMP + EC-CUBEダウンロード」と、「簡単に起動して捨てられるようにしておきたい事」を優先してDockerfileでの管理を選ぶ。
Docker hubにも登録済み

使い方

上記のREADMEを行うためのスクリーンキャスト作ってみました。(iMovieの練習のために)

もし、Docker Imageに変更を加えたければ、上記のImageにどんどん変更を加えていけば良いです。Docker hubでバージョン管理されますし、Imageに変更を加えた差分だけをpullすることが出来るので2回目以降は低コストに差分を取り込むことが出来ます。

まとめ

  • Dockerは概念がちょっと複雑なので、慣れるまで大変でした。
  • Vagrant + Dockerfile + Serverspec + CIで将来的にはTDD出来そうな気がする
  • Docker hubとの接続が遅い

コメント

  1. 小達 より:

    うまく動きません。。

    [root@localhost ~]# docker run -it –rm –name eccube -p 80 matsubo/eccube
    root@91bccda0eb69:/#

    となり、コンテナのシェルにログインするだけです。
    docker ps には表示されているのでコンテナの起動自体できてるのですが、ブラウザからアクセスできません。(http://ホストOSのIP:49155 等)
    そもそも動画では-it指定してるのにコンテナのシェルに入らず抜けてるのが気になります・・。dockerバージョンの違い?
    こちらはdockerバージョン1.3.2で確認してます。

    • Yuki Matsukura より:

      確かに、仰るとおりです!
      dockerの挙動が変わった模様です。

      Dockerfileを更新して、imageをpushしたので、再度pullしていただければと思います!
      v1.5.0で確認済みです。

  2. 小達 より:

    ご返信ありがとうございます!
    ですが、イメージを削除して再度以下のコマンドを叩いて再ビルドを行いましたが、ブラウザからアクセスしても接続できません。(「このウェブページにアクセスできません」です)
    何か間違っていますでしょうか。
    一応既存のイメージを削除してから実行しています。

    [root@localhost ~]# docker rmi matsubo/eccube
    [root@localhost ~]# docker pull matsubo/eccube
    [root@localhost ~]# docker run -it -p 80 matsubo/eccube
    root@cf0ce5c092cb:/#

    別ログインからポート確認。
    [xxx@localhost ~]$ docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cf0ce5c092cb matsubo/eccube:latest “bash” 24 seconds ago Up 24 seconds 3306/tcp, 5432/tcp, 0.0.0.0:49159->80/tcp condescending_colden
    http://192.168.0.100:49159/ → ダメ
    http://192.168.0.100:3000/ → 一応確認したけどダメ

    docker1.5じゃないとダメなんでしょうか・・

    • Yuki Matsukura より:

      すいません。なんか、dockerhubにうまくpushできていなかったです。
      今、再度buildしたらpostgresでエラーが出てしまいましたので、pushは後日。。。

      とりあえず、containerで、`supervisord` と打てば、各種デーモンが立ち上がるのでブラウザで見られます!

  3. 小達 より:

    ありがとうございます!
    `supervisord`したところ、ブラウザでファイルの一覧が出ました!
    ところが、
    http://192.168.0.100:49159/eccube-2.13.2/html/
    にアクセスすると、ブラウザの読み込みマークがずっとクルクル回ってるだけでページが開きません。本来ならこの/html/にアクセスするとEC-CUBEのページが表示されるんですよね・・?