はじめに
日本発オープンソースな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部分のバージョンアップで大分差があったりしましたが。 ↩