Help us understand the problem. What is going on with this article?

Dockerで手軽に!今直ぐ試そう EC-CUBE 3.0 開発版 (Docker+Apache2.4+PHP5.4+PostgreSQL9.2)

More than 5 years have passed since last update.

はじめに

日本発オープンソースなECサイト構築ツールとして、長い歴史を持つ EC-CUBE ですが、遂に EC-CUBE 3.0 としてメジャーバージョンアップを迎えようとしています。
2008年頃に2.0がリリースされたと思いますので、実に約7年ぶりのメジャーバージョンアップでは無いでしょうか。1

ティザーサイト紹介

ティザーサイトの紹介によると、フレームワーク入れ替えUI刷新全機能API対応等、大型アップデートになる様です。

個人的には、現行 EC-CUBE は、お金を扱うシステムの宿命なのか、かなりレガシーな実装で、ちょっとした変更をする時も、本体を修正する事を躊躇う事が多かったため、内部構造の刷新や全機能API対応に大きく期待しています。
また、開発リポジトリがgithubへ移行され、リリースに向けて活発に開発されています。

ec-cube+docker.png

今回は、そんな大型アップデートが迫った 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コンテナが動作する場所(環境)を準備します

自分は、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 最新開発版を試す

  1. データベースとして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 を指定
  2. 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 を指定
  3. EC-CUBE コンテナの起動確認

    $ docker logs -f cube3dev
    .
    .<ログが流れる>
    .
    Finished Successful!
    
    • 現在のEC-CUBE3では、初回に起動させる設定スクリプトで、必要なPHPのパッケージを Composer でダウンロードしてくるため、起動に多少時間がかかります。
    • 流れるログを眺めながら、 Finished Successful! と表示された事を確認したらセットアップ完了です。
    • 確認出来たら Ctrl + C で抜けられます。
  4. ブラウザからアクセスして動作確認

    • 任意のブラウザからEC-CUBEへアクセスする事が出来ます
      • 手元で動作させている場合のURL例 : http://localhost:8080
        範囲を選択_004.png
    • /admin/ へアクセスする事で管理画面の動作の確認も出来ます
      • 手元で動作させている場合のURL例 : http://localhost:8080/admin/
      • ID: admin PW: password にてログインしてください
        範囲を選択_005.png
  5. 起動中のコンテナへログインする

    • 起動中コンテナへログインして、適時設定変更やコード編集が可能です。
    $ docker exec -it cube3dev bash
    
    • 引数の意味
      • exec -it cube3dev bash : cube3dev という名前のコンテナへ bash でログイン(正確には、bashを追加起動)
  6. お片づけ(dockerコンテナの停止と削除)

    • EC-CUBE 3.0 を堪能したらdockerコンテナを片付けて終了です
    docker stop cube3dev cube3dev-postgres && \
    docker rm cube3dev cube3dev-postgres
    
    • 引数の意味
      • stop cube3dev cube3dev-postgres : cube3devcube3dev-postgres という名前のコンテナを停止(stop)
      • rm cube3dev cube3dev-postgres : cube3devcube3dev-postgres という名前のコンテナを削除(rm)

以上!

応用編:自分で EC-CUBE 3.0 コンテナを作成(ビルド)してみる

ここまでに紹介した方法で、「今直ぐ手軽に最新版を試したい!」という要望は満たせるかと思いますが、「特定のバージョンを試したい」、「自分で変更を加えたバージョンを試したい」という要件もあると思います。
そんな時は、自分で EC-CUBE 3.0 コンテナをビルドしてみましょう。
特に、ここまでに紹介した方法では、最新の開発版を試すため、試す時期によっては全く起動すらしない事も考えられます。その場合は、過去の安定バージョンを指定して試す事で解決が可能です。

応用編(1):特定のバージョンを試したい

  1. 試したい EC-CUBE3 の版数を確認する
    ブラウザで EC-CUBE3開発サイトのタグ一覧 へアクセス
    image
    良さそうな版数を探します。例えば、 3.0.0-beta2 を使ってみましょう。

  2. 元となる EC-CUBE3 の dockerコンテナ設定(Dockerfile)を入手します
    git clone コマンドで Dockerfile をダウンロード

    $ git clone https://github.com/ysaotome/docker-ec-cube3.git
    
  3. 版数を変更
    適当なエディタでDockerfileを編集します。

    $ vim docker-ec-cube3/Dockerfile
    

    修正箇所 :
    ENV ECCUBE_BRANCHE 3.0.0-dev

    ENV ECCUBE_BRANCHE 3.0.0-beta2
    と変更して保存

  4. Dockerfile をビルドする

    $ docker build --rm -t ysaotome/ec-cube3:3.0.0-beta2 docker-ec-cube3/
    
  5. 独自にビルドした EC-CUBE3 コンテナを起動する
    基本編の手順を上から進め、手順2.で、起動するコンテナを指定していた ysaotome/ec-cube3:3.0.0-devysaotome/ec-cube3:3.0.0-beta2 へ変更すれば完了。

応用編(2):自分で変更を加えたバージョンを試したい

  1. 本家 EC-CUBE3 のレポジトリをコピー(fork)して編集する
    forkおよび変更の加え方、そして本家レポジトリへのプルリク送付までは、下記記事が詳しい。
    ここでは、forkしたレポジトリURLが https://github.com/ysaotome/ec-cube であるとする。

  2. 元となる EC-CUBE3 の dockerコンテナ設定(Dockerfile)を入手します
    git clone コマンドで Dockerfile をダウンロード

    $ git clone https://github.com/ysaotome/docker-ec-cube3.git
    
  3. 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}
    と変更して保存

  4. Dockerfile をビルドする

    $ docker build --rm -t ysaotome/ec-cube3:myedit docker-ec-cube3/
    
  5. 独自にビルドした EC-CUBE3 コンテナを起動する
    基本編の手順を上から進め、手順2.で、起動するコンテナを指定していた ysaotome/ec-cube3:3.0.0-devysaotome/ec-cube3:myedit へ変更すれば完了。

新しい EC-CUBE 3.0 の活躍に期待してます。



  1. とは言え、EC-CUBEの場合は、2.XXのXX部分のバージョンアップで大分差があったりしましたが。 

ysaotome
ニッフニッフにしてやんよ。( ・ω・)=つ≡つ
http://sotm.jp
fjct
クラウド・IoT 関連サービスを開発・提供している企業です。(こちらは、富士通クラウドテクノロジーズの有志にて運営しております。)
https://fjct.fujitsu.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした