LoginSignup
7
10

More than 1 year has passed since last update.

EC-CUBE4 環境構築(ローカル編)

Last updated at Posted at 2021-01-21

:zipper_mouth: まえおき

  • 公式リポジトリの中にある docker-compose.yml は、初回起動時に Dockerfile をビルドしてコンテナイメージを作る。そのため、composer.json に EC-CUBEプラグインが入っている場合、Dockerfile 内に記述されている composer install で止まる(と思われる)。したがって、公式の docker-compose.yml は使わずに環境を構築する方法を考える。
  • 個人的には、PhpStorm の静的解析は動いて欲しいのです。なので vendor ディレクトリの中も見えていた方がいいので、本手順で構築を行いました。
  • 以前に投稿した記事 EC-CUBE4 初回デプロイ が1年以上経ち、忘れている部分もあるので、まとめ直しました。

:point_right_tone1: 前提

  • 動作確認したEC-CUBEのバージョンは 4.0.5 です。
  • 作業を進めるにあたり適当な docker-compose.yml を用意する。今回は以下のようなサンプルを想定する。
version: '3'

services:
  web:
    image: xxxx
    container_name: container-web
    working_dir: /var/www/vhosts/your_project/app
    volumes:
      - ../app:/var/www/vhosts/your_project:delegated
      - /var/www/vhosts/your_project/app/codeception
      - /var/www/vhosts/your_project/app/dockerbuild
      - /var/www/vhosts/your_project/app/gulp
      - /var/www/vhosts/your_project/app/node_modules
      - /var/www/vhosts/your_project/app/var/cache
      - /var/www/vhosts/your_project/app/var/log
      - /var/www/vhosts/your_project/app/var/sessions
      - /var/www/vhosts/your_project/app/zap
    ports:
      - '80:80'
  • プロジェクトのディレクトリ構成は以下の通りです
your_workspace − your_project − docker/docker-compose.yml
                  ∟ app

:raised_hands_tone1: Docker を使用して新しく開発環境を構築する手順

最新のソースコードを GitHub から取得する

cd your_workspace/your_project/app
git clone -b 4.0 --depth 1 https://github.com/EC-CUBE/ec-cube.git .

不要なファイルを削除する

rm -rf .git

環境変数ファイルのコピーと変更

cp -ap .env.dist .env
vi .env

Dockerの起動

cd your_workspace/your_project/docker
docker-compose up -d

PHPライブラリのインストール

docker-compose exec --user apache web composer install --no-scripts --no-plugins --no-autoloader --prefer-dist
docker-compose exec --user apache web composer dumpautoload --no-scripts --no-plugins

EC-CUBEのセットアップ

# キャッシュやログ出力に使われるディレクトリのパーミッションと所有者を変更
docker-compose exec web chown -R apache:apache ./var
docker-compose exec web chmod -R 777 ./var

# EC-CUBEの初期化
docker-compose exec --user apache web ./bin/console eccube:install

eccube:install について、内部的には以下と同等(らしい)。

# (optional) データベース削除
# bin/console doctrine:database:drop --force
# データベース作成
# bin/console doctrine:database:create
# (optional) スキーマ削除
# bin/console doctrine:schema:drop --force
# スキーマ生成
# bin/console doctrine:schema:create
# 初期データ生成
# bin/console eccube:fixtures:load

EC-CUBE 4.0 開発者向けドキュメントサイト > インストール方法 > Windows 環境を使用する場合

キャッシュの生成

docker-compose exec --user apache web ./bin/console cache:warmup

:point_up_tone2: キャッシュクリアをする場合

docker-compose exec --user apache web ./bin/console cache:clear --no-warmup

アクセス確認

http://localhost を開いてデフォルトのショップが表示されればOKです。
:no_entry_sign: URLは、利用した docker イメージに依存します。

:raised_hands_tone1: Docker を使用して他のマシンに開発環境を構築する手順(EC-CUBEプラグイン無し)

手順 「新しく開発環境を構築する手順 」 で使用したソースコードを用意する

環境変数ファイルのコピーと変更

cd your_workspace/your_project/app
cp -ap .env.dist .env
vi .env

Dockerの起動

cd your_workspace/your_project/docker
docker-compose up -d

PHPライブラリのインストール

docker-compose exec --user apache web composer install --no-scripts --no-plugins --no-autoloader --prefer-dist
docker-compose exec --user apache web composer dumpautoload --no-scripts --no-plugins

EC-CUBEのセットアップ

# キャッシュやログ出力に使われるディレクトリのパーミッションと所有者を変更
docker-compose exec web chown -R apache:apache ./var
docker-compose exec web chmod -R 777 ./var

# EC-CUBEの初期化
docker-compose exec --user apache web ./bin/console eccube:install

キャッシュの生成

docker-compose exec --user apache web ./bin/console cache:warmup

:point_up_tone2: キャッシュクリアをする場合

docker-compose exec --user apache web ./bin/console cache:clear --no-warmup

アクセス確認

http://localhost を開いてデフォルトのショップが表示されればOKです。

:no_entry_sign: URLは、利用した docker イメージに依存します。

:raised_hands_tone1: Docker を使用して他のマシンに開発環境を構築する手順(EC-CUBEプラグイン有り)

手順 「新しく開発環境を構築する手順 」 で使用したソースコードを用意する

環境変数ファイルのコピーと変更

cd your_workspace/your_project/app
cp -ap .env.dist .env
vi .env

Dockerの起動

cd your_workspace/your_project/docker
docker-compose up -d

PHPライブラリのインストール

EC-CUBEプラグインをインストール済みの場合は、EC-CUBEプラグインの情報が composer.jsoncomposer.lock に記載されています。売上集計プラグインは、ec-cube/SalesReport4 です。
このままでは、 composer install ができません… :sob:

回避するには、利用しているEC-CUBEバージョンのオリジナルの composer.jsoncomposer.lock を用意してコマンドを実行します。

docker-compose exec --user apache -e COMPOSER=composer_4.0.5.json web composer install --no-scripts --no-plugins --no-autoloader --prefer-dist
docker-compose exec --user apache web composer dumpautoload --no-scripts --no-plugins

※ 環境変数 COMPOSER を利用して、JSONファイル指定でコマンドを実行します。
 上記の場合、ロックファイルのファイル名は composer_4.0.5.lock です。
 https://getcomposer.org/doc/03-cli.md#composer

EC-CUBEのセットアップ

# キャッシュやログ出力に使われるディレクトリのパーミッションと所有者を変更
docker-compose exec web chown -R apache:apache ./var
docker-compose exec web chmod -R 777 ./var

# EC-CUBEの初期化
docker-compose exec --user apache web ./bin/console eccube:install

認証キーを設定

私の場合、案件毎に認証キーを揃えている(開発環境・ステージング環境・本番環境は同一)ので、はじめにインストールした環境で取得した認証キーをここで設定します。

update dtb_base_info set authentication_key='your_authentication_key';

EC-CUBEプラグインのインストール

docker-compose exec --user apache web ./bin/console eccube:composer:install

./bin/console eccube:composer:require-already-installed という別のコマンドもあります。
require となっているので、composer.lock とは違うバージョンが入る可能性がありますのでここでは使いませんでした。
eccube:composer:install は、dtb_plugin テーブルを参照しておらず、eccube:composer:require-already-installed は、dtb_plugin テーブルを参照している
という違いもあるようです。

app/Customize/Entity に定義した、エンティティ拡張トレイトが 一時フォルダに生成されます。

EC-CUBEプラグインの有効化

docker-compose exec --user apache web ./bin/console eccube:plugin:enable --code=SalesReport4

※ 他にもインストール済みのプラグインがある場合は、 SalesReport4 の部分を変えて実行します。
app/Customize/Entity に定義した、エンティティ拡張トレイトが app/proxy/entity に生成されます。

キャッシュの生成

docker-compose exec --user apache web ./bin/console cache:warmup

:point_up_tone2: キャッシュクリアをする場合

docker-compose exec --user apache web ./bin/console cache:clear --no-warmup

アクセス確認

http://localhost を開いてデフォルトのショップが表示されればOKです。

:no_entry_sign: URLは、利用した docker イメージに依存します。

参考リンク

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10