EC-CUBE4の環境構築続きです。
【EC-CUBE4】①EC-CUBE本体の開発環境を整える(インストール編)
【EC-CUBE4】②EC-CUBE本体の開発環境を整える(GitHub Flow編)
[【EC-CUBE4】③EC-CUBE本体の開発環境を整える(MYSQL,MailCatcher編)]
(https://qiita.com/junpeko5/items/3316b654b4b80ee59376)
前提条件
- Mac
- PHP7.2がMacローカル環境にインストール済み(おすすめはphpenv)
- gitがインストール済み
- docker for macがインストール済み
- EC-CUBE4がローカル環境にインストール済み(【EC-CUBE4】①EC-CUBE本体の開発環境を整える(インストール編)が終わっていること)
方針
- dbサーバーはpostgres:10.9の公式dockerイメージを利用。
- メールサーバーはmailcatcherのdockerイメージを利用
- webサーバーはビルドインウェブサーバーを利用。
pgsqlのエクステンションを設定されているか確認
postgresはモジュールがデフォルトで入っていないことがあるので、確認してください。
$ php -S localhost:8000
$ php -m
[PHP Modules]
pdo_pgsql
pgsql
なければ、エクステンションを有効にしなければなりませんが、本記事では省略します。
通常はphp.iniを編集することになると思います。
.phpenvの場合は以下参考。
[.phpenvでPHPインストール時にpgsql・pdo-pgsqlを有効にする方法]
(https://qiita.com/junpeko5/items/79fbec0b20212f7432b7)
DB、メールサーバーの作成
postgres用のdocker-compose.ymlをgithubで管理しています。
https://github.com/junpeko5/docker-postgres
docker-compose.ymlは下記の用な感じです。
version: '3.1'
services:
db:
image: postgres:10.9
container_name: postgres_container
ports:
- 5432:5432
volumes:
- ./postgres/init:/docker-entrypoint-initdb.d
restart: always
environment:
POSTGRES_USER: docker
POSTGRES_PASSWORD: docker
POSTGRES_DB: eccube4
volumes:
- ./data:/var/lib/postgresql/data
mailcatcher:
image: schickling/mailcatcher
ports:
- "1080:1080"
- "1025:1025"
適当な場所でクローンしてください。
$ cd path/to/適当なディレクトリ
$ git clone https://github.com/junpeko5/docker-postgres
$ cd docker-postgres
コンテナを立ち上げます。
$ docker-compose up -d
Creating network "docker-postgres_default" with the default driver
Creating docker-postgres_mailcatcher_1 ... done
Creating postgres_container ... done
dockerコンテナの起動を確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b235a489be1c postgres:10.9 "docker-entrypoint.s…" 20 seconds ago Up 19 seconds 0.0.0.0:5432->5432/tcp postgres_container
56edb4d55834 schickling/mailcatcher "mailcatcher --no-qu…" 20 seconds ago Up 19 seconds 0.0.0.0:1025->1025/tcp, 0.0.0.0:1080->1080/tcp docker-postgres_mailcatcher_1
EC-CUBEのDB接続設定やメールサーバーの設定はsymfonyと同様.envファイルに書きます。
.envに直接書いても良いですが、DBのマイグレーション等も自動で行ってくれる、インストールコマンドを使うのが楽です。
また、http://localhost:8000
にアクセスして、webインストーラーで行う方法もあります。
EC-CUBEのインストールコマンドを実行する
今回はEC-CUBEのインストールコマンドを使います。
【EC-CUBE4】EC-CUBE本体の開発環境を整える(インストール編)が終わっているという前提で進めます。
インストールコマンドをEC-CUBEをインストールしたディレクトリで実行します。
$ cd path/to/EC-CUBEをインストールしたディレクトリ
インストールコマンドを実行する
$ bin/console e:i
Database Url [sqlite:///var/eccube.db]:
> postgres://docker:docker@127.0.0.1:5432/eccube4
Mailer Url [null://localhost]:
> smtp://localhost:1025
Auth Magic [ezmuHyhtjRVzkkof]:
>
!
! [CAUTION] Execute the installation process. All data is initialized.
!
Is it OK? (yes/no) [yes]:
>
Database UrlとMailer Urlを上記のように設定しenterで進みます。何も入力しなければデフォルトの設定となります。
.envに設定内容が書き込まれているか、確認してみてください。
ちなみに、このコマンドでデータベースの初期化やマイグレーション、ダミーデータの投入も自動で実行されます。
では、EC-CUBEをインストールしたルートディレクトリで下記コマンドを実行してみましょう。
$ php -S localhost:8000
インストールが完了したら、ローカル環境にPHPのサーバーを立ち上げ、下記URLで動作します。
EC-CUBE
http://localhost:8000/
Mailcatcher
http://localhost:1080/
実際にEC-CUBEで商品を買ってみて、メールが送信されるか確認してみてください。
停止する
dockerコンテナの停止
mysqlのプロジェクトに移動して、以下のコマンドです。
$ docker-compose down
webサーバーの停止
ビルドインウェブサーバーを停止する場合はターミナル上でcontrol + c
です。
感想
DockerでDBサーバーやメールサーバーを利用すると管理が楽でおすすめです。
また、phpenv等を使えばローカルでphpのバージョンの切り替えはかんたんにできます。
次回は、【EC-CUBE4】⑤EC-CUBE本体の開発環境を整える(Xdebug、PhpStorm編)です。
参考