EC-CUBEのローカル環境をdockerでサクッと作ってみる

EC-CUBEのローカル環境をdockerでサクッと作ってみる

2022年7月24日
知恵
Pocket

今回ターゲットにするのは、EC-CUBE3です。

なぜいまさらEC-CUBE3なのかは、既存のサイトがEC-CUBE3で運用されているからです。

この手順でいれた場合の注意ですが

  • DBは永続化されません。(Dockerを落とすと消えます)
  • プラグイン等の動作確認は行なえますが、↑により、落とすと消えてしまいます。

まずは、dockerを利用できるように以下ファイルをいれておきます。

brew install docker --cask
open /Applications/Docker.app #起動します

docker-composeが利用できるか確認します。

docker-compose --version
docker-compose version 1.29.2, build 5becea4c

本家サイトでは、EC-CUBE4以降であれば、docker-compose.ymlファイルまで用意してあるので、そちらを利用してください。(EC-CUBE3系はない)

EC-CUBE3系なので、以下を利用していきます。

git clone https://github.com/nanasess/docker-ec-cube3.git
cd docker-ec-cube3

そのままだとリポジトリが古いみたいなので、以下を修正します。

docker-compose.ymlとeccube3/Dockerfileの2ファイルを変更します。

docker-compose.yml:        - ECCUBE_REPOS=https://github.com/EC-CUBE/ec-cube.git
eccube3/Dockerfile:ARG ECCUBE_REPOS=https://github.com/EC-CUBE/ec-cube.git
↓
docker-compose.yml:        - ECCUBE_REPOS=https://github.com/EC-CUBE/ec-cube3.git
eccube3/Dockerfile:ARG ECCUBE_REPOS=https://github.com/EC-CUBE/ec-cube3.git

起動していきます。

docker-compose up -d

以下のエラーが出てしまいます。

 => ERROR [ 7/12] RUN cd /var &&     rm -r /var/www &&     git clone --depth=50 -b master https://github.com/EC-CUBE/ec-cube3.git /var/www    0.7s
------
 > [ 7/12] RUN cd /var &&     rm -r /var/www &&     git clone --depth=50 -b master https://github.com/EC-CUBE/ec-cube3.git /var/www:
#12 0.315 Cloning into '/var/www'...
#12 0.681 warning: Could not find remote branch master to clone.
#12 0.681 fatal: Remote branch master not found in upstream origin
------
executor failed running [/bin/sh -c cd /var &&     rm -r /var/www &&     git clone --depth=50 -b ${ECCUBE_BRANCH} ${ECCUBE_REPOS} ${ECCUBE_PATH}]: exit code: 128
ERROR: Service 'eccube3' failed to build : Build failed

これは、masterブランチがないよということでした。

#12 0.681 warning: Could not find remote branch master to clone.

こちらで確認してみます。

EC-CUBEのローカル環境をdockerでサクッと作ってみる

masterというブランチはなく、3.0, 3.1, hotfixしかありません。

ファイルを修正します。今回は、3.0系を利用したいので、3.0にします。

docker-compose.yml

    - ECCUBE_BRANCH=master
↓
    - ECCUBE_BRANCH=3.0

eccube3/Dockerfile

ARG ECCUBE_BRANCH=master
↓
ARG ECCUBE_BRANCH=3.0

再度、実行します。

docker-compose up -d


Creating docker-ec-cube3_mailcatcher_1 ... done
Creating docker-ec-cube3_db_1          ... done
Creating docker-ec-cube3_eccube3_1     ... done

成功しました。

以下で、確認します。

フロント画面: http://localhost:8080

管理者画面: http://localhost:8080/admin ※ID: admin / PW: password

メール: http://localhost:1080/ ※注文時のメール等確認可能

フロント画面を立ち上げて、以下が確認できればOK

EC-CUBEのローカル環境をdockerでサクッと作ってみる

管理画面から確認すると、以下のバージョンでした。(2022/07/24時点)

システム情報
EC-CUBE
3.0.18-p4
サーバーOS
Linux 498bf2a1ced2 5.10.76-linuxkit #1 SMP Mon Nov 8 10:21:19 UTC 2021 x86_64
DBサーバー
PostgreSQL 8.4.20 on x86_64-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17), 64-bit
WEBサーバー
Apache/2.4.10 (Debian)
PHP
7.1.0 (Core, date, libxml, openssl, pcre, sqlite3, zlib, ctype, curl, dom, fileinfo, filter, ftp, hash, iconv, json, mbstring, SPL, PDO, session, posix, Reflection, standard, SimpleXML, pdo_sqlite, Phar, tokenizer, xml, xmlreader, xmlwriter, mysqlnd, apache2handler, gd, mcrypt, pdo_mysql, pdo_pgsql, soap, zip)
HTTPユーザーエージェント
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36

メールもこのように確認できました。

EC-CUBEのローカル環境をdockerでサクッと作ってみる

ソースの修正等は、コンテナ内に入って行います。

docker-compose ps
            Name                           Command               State                      Ports
--------------------------------------------------------------------------------------------------------------------
docker-ec-cube3_db_1            /docker-entrypoint.sh postgres   Up      5432/tcp
docker-ec-cube3_eccube3_1       /bin/sh -c /wait-for-db.sh       Up      0.0.0.0:8080->80/tcp
docker-ec-cube3_mailcatcher_1   sh -c mailcatcher --no-qui ...   Up      0.0.0.0:1025->1025/tcp,
                                                                         0.0.0.0:1080->1080/tcp
docker exec -it docker-ec-cube3_eccube3_1 /bin/bash

ログは、コンテナに入ってから以下で確認できます。

cd app/log/
ls
admin_site_2022-07-24.log  front_site_2022-07-24.log  site_2022-07-24.log

DBの中身を見たい場合は、DBのコンテナに入ってから確認します。

docker exec -it docker-ec-cube3_db_1 /bin/bash

デフォルトのユーザは、postgresになります。

psql -U postgres
postgres=# \l
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |      アクセス権
-----------+----------+------------------+-------------+-------------------+-----------------------
 cube3_dev | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 postgres  | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres
                                                                           : postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres
                                                                           : postgres=CTc/postgres
(4 行)

プラグインもインストールすることができました。

ただし、有効化を実行した際にシステムエラーが発生する場合がありました。

何度か、有効化を行うと、成功して有効になりました。