Docker Composeを使用してインストールする(EC-CUBE4.0.5以下の場合)


開発環境として関連サービス(DB、メールデバッグ環境等)も含め手軽に一括構築したい場合におすすめの方法です

前提として、 Docker Desktop のインストール が必要です。

  • 初期状態では SQLite3 を使用します
  • ローカルディレクトリをマウントします
cd path/to/ec-cube

# コンテナの起動 (初回のみビルド処理あり)
docker-compose up -d

# 初回はインストールスクリプトを実行( **`www-data` ユーザで実行する点に注意!** )
docker-compose exec -u www-data ec-cube bin/console eccube:install

2回目以降の起動時も同様のコマンドを使用します。

# コンテナの起動
docker-compose up -d

# コンテナの停止
docker-compose down

各種コンテナの使用

EC-CUBE 4が動作するWebサーバを含め、以下のコンテナが簡単に起動できます。

コンテナ名 概要 ブラウザアクセス例
ec-cube EC-CUBE 向けPHP Webサーバ http://localhost:8080
postgres PostgreSQLデータベースサーバ  
mysql MySQLデータベースサーバ  
mailcatcher MailCatcher デバッグ用SMTPサーバ http://localhost:1080

起動時にコンテナ名を列挙することで、各種コンテナを起動します。

# 例:EC-CUBEとMySQLとphpMyAdminとMailCatcherを起動する
docker-compose up -d ec-cube mysql mailcatcher

# 省略した場合はすべてのサービスが起動します
docker-compose up -d

各種コンテナと連携させる場合は、以下の通り設定が必要です。

メール送信を使用する場合

.env にて MAILER_URL=smtp://mailcatcher:1025 としておきます。

PostgreSQL を使用する場合

.env にて DATABASE_URL=postgres://dbuser:secret@postgres/eccubedb としておきます。

データベーススキーマを初期化していない場合は、以下の実行が必要です。

# スキーマ作成+初期データ投入
docker-compose exec ec-cube composer run-script compile
MySQL を使用する場合

.env にて DATABASE_URL=mysql://dbuser:secret@mysql/eccubedb としておきます。

データベーススキーマを初期化していない場合は、以下の実行が必要です。

# スキーマ作成+初期データ投入
docker-compose exec ec-cube composer run-script compile

ファイルの同期

docker-composeを用いてインストールした場合、ホストのローカルディレクトリとコンテナ上のファイルは同期します。.env等の設定ファイルについても、ホスト上のファイルを直接編集します。

なお、一部環境において著しいパフォーマンスの劣化が発生する場合があるため、以下のフォルダは同期の対象から除外しています。

  • /var
  • /vendor

上記除外対象のフォルダについてはDocker Volumeを用いて別途永続化を行っています。