まえおき
- 公式リポジトリの中にある
docker-compose.yml
は、初回起動時にDockerfile
をビルドしてコンテナイメージを作る。そのため、composer.json
に EC-CUBEプラグインが入っている場合、Dockerfile
内に記述されているcomposer install
で止まる(と思われる)。したがって、公式のdocker-compose.yml
は使わずに環境を構築する方法を考える。 - 個人的には、PhpStorm の静的解析は動いて欲しいのです。なので
vendor
ディレクトリの中も見えていた方がいいので、本手順で構築を行いました。 - 以前に投稿した記事 EC-CUBE4 初回デプロイ が1年以上経ち、忘れている部分もあるので、まとめ直しました。
前提
- 動作確認した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
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
キャッシュクリアをする場合
docker-compose exec --user apache web ./bin/console cache:clear --no-warmup
アクセス確認
http://localhost
を開いてデフォルトのショップが表示されればOKです。
URLは、利用した docker イメージに依存します。
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
キャッシュクリアをする場合
docker-compose exec --user apache web ./bin/console cache:clear --no-warmup
アクセス確認
http://localhost
を開いてデフォルトのショップが表示されればOKです。
URLは、利用した docker イメージに依存します。
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.json
や composer.lock
に記載されています。売上集計プラグインは、ec-cube/SalesReport4
です。
このままでは、 composer install
ができません…
回避するには、利用しているEC-CUBEバージョンのオリジナルの composer.json
と composer.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
キャッシュクリアをする場合
docker-compose exec --user apache web ./bin/console cache:clear --no-warmup
アクセス確認
http://localhost
を開いてデフォルトのショップが表示されればOKです。
URLは、利用した docker イメージに依存します。