はじめに
日本発オープンソースなECサイト構築ツールとして、長い歴史を持つ EC-CUBE ですが、遂に EC-CUBE 3.0 としてメジャーバージョンアップを迎えようとしています。
2008年頃に2.0がリリースされたと思いますので、実に約7年ぶりのメジャーバージョンアップでは無いでしょうか。1
ティザーサイトの紹介によると、フレームワーク入れ替え、UI刷新、全機能API対応等、大型アップデートになる様です。
個人的には、現行 EC-CUBE は、お金を扱うシステムの宿命なのか、かなりレガシーな実装で、ちょっとした変更をする時も、本体を修正する事を躊躇う事が多かったため、内部構造の刷新や全機能API対応に大きく期待しています。
また、開発リポジトリがgithubへ移行され、リリースに向けて活発に開発されています。
今回は、そんな大型アップデートが迫った EC-CUBE3 を、いち早く手軽に試す方法として、dockerコンテナを用いたEC-CUBE3の環境構築について紹介します。
構築環境
今回、テストした環境は下記の通りです。
- docker (1.6.2)
 - Apache (2.4.10)
 - PHP (5.4.41)
 - PostgreSQL (9.2.11)
 - EC-CUBE (eccube-3.0.0-dev@20150606)
 
事前準備
dockerコンテナが動作する場所(環境)を準備します
- 
Windowsの場合
一番手軽な方法は手元のパソコンで boot2docker を使う事だと思います。- 参考サイト: WindowsでもDockerがしたい!
 
 - 
Mac OS Xの場合
boot2docker をさらに簡単に使える様にした kitematic が便利です。- 参考サイト: KitematicでDockerを使ってみた
 
 - 
その他
UbuntuやCentOS等、サーバで動作させる場合は下記が参考になります。 
自分は、dockerコンテナの動作場所として ニフティクラウド 上に構築した CoreOS (695.0.0) を利用しました。
docker公式レジストリから必要なdockerコンテナイメージをダウンロード(pull)します
- 
PostgreSQL
$ docker pull postgres:9.2.11 - 
Apache + PHP
$ docker pull php:5.4.41-apache - 
EC-CUBE3
$ docker pull ysaotome/ec-cube3:3.0.0-dev 
必要なイメージがダウンロード出来ているか確認します。
$ docker images | egrep -e 'postgres|php|ec-cube'
ysaotome/ec-cube3           3.0.0-dev           130350c3ffe4        3 hours ago         728.6 MB
php                         5.4.41-apache       87a53e013cb2        8 days ago          468.3 MB
postgres                    9.2.11              473f41a24e4e        10 days ago         212.6 MB
基本編:docker で EC-CUBE 3.0 最新開発版を試す
- 
データベースとしてPostgreSQLをコンテナで立ち上げます
$ docker run -d \ --name cube3dev-postgres \ -e POSTGRES_USER=cube3_dev_user \ -e POSTGRES_PASSWORD=password \ -e POSTGRES_DB=cube3_dev \ postgres:9.2.11- 引数の意味
- 
--name cube3dev-postgres:cube3dev-postgresという名前のコンテナとして起動 - 
-e POSTGRES_USER=cube3_dev_user: PostgreSQLのユーザをcube3_dev_userへ設定 - 
-e POSTGRES_PASSWORD=password: PostgreSQLのパスワードをpasswordへ設定 - 
-e POSTGRES_DB=cube3_dev: PostgreSQLの初期DBをcube3_devで作成 - 
postgres:9.2.1: 起動するPostgreSQLのバージョンは9.2.11を指定 
 - 
 
 - 引数の意味
 - 
EC-CUBE 3.0 および Apache + PHP を コンテナで立ち上げ、 PostgreSQL と接続します
$ docker run -d \ --name cube3dev \ --link cube3dev-postgres:postgres \ -p 8080:80 \ ysaotome/ec-cube3:3.0.0-dev- 引数の意味
- 
--name cube3dev:cube3devという名前のコンテナとして起動 - 
--link cube3dev-postgres:postgres:cube3dev-postgresという名前のコンテナをこのコンテナ内部からpostgresとして接続(link)する - 
-p 8080:80: dockerコンテナ外部(手元のパソコン等)の8080番ポートを、dockerコンテナ内部の80番ポートへ割り当てる - 
ysaotome/ec-cube3:3.0.0-dev: 起動するEC-CUBEのバージョンは3.0.0-devを指定 
 - 
 
 - 引数の意味
 - 
EC-CUBE コンテナの起動確認
$ docker logs -f cube3dev . .<ログが流れる> . Finished Successful!- 現在のEC-CUBE3では、初回に起動させる設定スクリプトで、必要なPHPのパッケージを 
Composerでダウンロードしてくるため、起動に多少時間がかかります。 - 流れるログを眺めながら、 
Finished Successful!と表示された事を確認したらセットアップ完了です。 - 確認出来たら 
Ctrl + Cで抜けられます。 
 - 現在のEC-CUBE3では、初回に起動させる設定スクリプトで、必要なPHPのパッケージを 
 - 
ブラウザからアクセスして動作確認
 - 
起動中のコンテナへログインする
- 起動中コンテナへログインして、適時設定変更やコード編集が可能です。
 
$ docker exec -it cube3dev bash- 引数の意味
- 
exec -it cube3dev bash:cube3devという名前のコンテナへbashでログイン(正確には、bashを追加起動) 
 - 
 
 - 
お片づけ(dockerコンテナの停止と削除)
- EC-CUBE 3.0 を堪能したらdockerコンテナを片付けて終了です
 
docker stop cube3dev cube3dev-postgres && \ docker rm cube3dev cube3dev-postgres- 引数の意味
- 
stop cube3dev cube3dev-postgres:cube3devとcube3dev-postgresという名前のコンテナを停止(stop) - 
rm cube3dev cube3dev-postgres:cube3devとcube3dev-postgresという名前のコンテナを削除(rm) 
 - 
 
 
以上!
応用編:自分で EC-CUBE 3.0 コンテナを作成(ビルド)してみる
ここまでに紹介した方法で、「今直ぐ手軽に最新版を試したい!」という要望は満たせるかと思いますが、「特定のバージョンを試したい」、「自分で変更を加えたバージョンを試したい」という要件もあると思います。
そんな時は、自分で EC-CUBE 3.0 コンテナをビルドしてみましょう。
特に、ここまでに紹介した方法では、最新の開発版を試すため、試す時期によっては全く起動すらしない事も考えられます。その場合は、過去の安定バージョンを指定して試す事で解決が可能です。
応用編(1):特定のバージョンを試したい
- 
試したい EC-CUBE3 の版数を確認する
ブラウザで EC-CUBE3開発サイトのタグ一覧 へアクセス

良さそうな版数を探します。例えば、3.0.0-beta2を使ってみましょう。 - 
元となる EC-CUBE3 の dockerコンテナ設定(Dockerfile)を入手します
git cloneコマンドでDockerfileをダウンロード$ git clone https://github.com/ysaotome/docker-ec-cube3.git - 
版数を変更
適当なエディタでDockerfileを編集します。$ vim docker-ec-cube3/Dockerfile修正箇所 :
ENV ECCUBE_BRANCHE 3.0.0-dev
↓
ENV ECCUBE_BRANCHE 3.0.0-beta2
と変更して保存 - 
Dockerfile をビルドする
$ docker build --rm -t ysaotome/ec-cube3:3.0.0-beta2 docker-ec-cube3/ - 
独自にビルドした EC-CUBE3 コンテナを起動する
基本編の手順を上から進め、手順2.で、起動するコンテナを指定していたysaotome/ec-cube3:3.0.0-devをysaotome/ec-cube3:3.0.0-beta2へ変更すれば完了。 
応用編(2):自分で変更を加えたバージョンを試したい
- 
本家 EC-CUBE3 のレポジトリをコピー(fork)して編集する
forkおよび変更の加え方、そして本家レポジトリへのプルリク送付までは、下記記事が詳しい。
ここでは、forkしたレポジトリURLがhttps://github.com/ysaotome/ec-cubeであるとする。 - 
元となる EC-CUBE3 の dockerコンテナ設定(Dockerfile)を入手します
git cloneコマンドでDockerfileをダウンロード$ git clone https://github.com/ysaotome/docker-ec-cube3.git - 
EC-CUBE3 取得先レポジトリの変更
適当なエディタでDockerfileを編集します。$ vim docker-ec-cube3/Dockerfile修正箇所 :
RUN git clone -b ${ECCUBE_BRANCHE} https://github.com/EC-CUBE/ec-cube.git ${ECCUBE_PATH}
↓
RUN git clone -b ${ECCUBE_BRANCHE} https://github.com/ysaotome/ec-cube.git ${ECCUBE_PATH}
と変更して保存 - 
Dockerfile をビルドする
$ docker build --rm -t ysaotome/ec-cube3:myedit docker-ec-cube3/ - 
独自にビルドした EC-CUBE3 コンテナを起動する
基本編の手順を上から進め、手順2.で、起動するコンテナを指定していたysaotome/ec-cube3:3.0.0-devをysaotome/ec-cube3:myeditへ変更すれば完了。 
新しい EC-CUBE 3.0 の活躍に期待してます。
- 
とは言え、EC-CUBEの場合は、2.XXのXX部分のバージョンアップで大分差があったりしましたが。 ↩
 



