EC-CUBE4の環境構築続きです。
【EC-CUBE4】①EC-CUBE本体の開発環境を整える(インストール編)
【EC-CUBE4】②EC-CUBE本体の開発環境を整える(GitHub Flow編)
前提条件
- Mac
- PHP7.2がMacローカル環境にインストール済み(おすすめはphpenv)
- gitがインストール済み
- docker for macがインストール済み
- EC-CUBE4がローカル環境にインストール済み(【EC-CUBE4】EC-CUBE本体の開発環境を整える(インストール編)が終わっていること)
方針
- dbサーバーはmysql:5.7の公式dockerイメージを利用。
- メールサーバーはmailcatcherのdockerイメージを利用
- webサーバーはビルドインウェブサーバーを利用。
DB、メールサーバーの作成
mysql用のdocker-compose.ymlをgithubで管理しています。
https://github.com/junpeko5/mysql-docker.git
docker-compose.ymlは下記の用な感じです。
version: '3'
services:
mysql:
image: mysql:5.7
container_name: mysql_db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: eccube4
MYSQL_USER: docker
MYSQL_PASSWORD: docker
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./mysql/sql:/docker-entrypoint-initdb.d
ports:
- 3306:3306
mailcatcher:
image: schickling/mailcatcher
ports:
- "1080:1080"
- "1025:1025"
$ cd path/to/適当なディレクトリ
クローンしてみてください。
$ git clone https://github.com/junpeko5/mysql-docker.git
$ cd mysql-docker
コンテナを立ち上げ。
$ docker-compose up -d
Creating network "mysql-docker_default" with the default driver
Creating mysql-docker_mailcatcher_1 ... done
Creating mysql_container ... done
確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a716864e112 mysql:5.7 "docker-entrypoint.s…" 51 minutes ago Up 51 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql_db
6c52c56d6d74 schickling/mailcatcher "mailcatcher --no-qu…" 51 minutes ago Up 51 minutes 0.0.0.0:1025->1025/tcp, 0.0.0.0:1080->1080/tcp mysql-docker_mailcatcher_1
EC-CUBEのDB接続設定やメールサーバーの設定はsymfonyと同様.envファイルに書きます。
.envに直接書いても良いですが、DBのマイグレーション等も自動で行ってくれる、インストールコマンドを使うのが楽です。
EC-CUBEのインストールコマンドを実行する
【EC-CUBE4】EC-CUBE本体の開発環境を整える(インストール編)が終わっているという前提で進めます。
インストールコマンドをEC-CUBEをインストールしたディレクトリで実行します。
$ cd path/to/EC-CUBEをインストールしたディレクトリ
インストールコマンドを実行する
$ bin/console e:i
Database Url [sqlite:///var/eccube.db]:
> mysql://docker:docker@127.0.0.1:3306/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のバージョンの切り替えはかんたんにできます。
あえてdockerでwebサーバーを立てる必要性を感じないためこのような構成にしています。
動作も軽快ですしね。
次回は、[【EC-CUBE4】④EC-CUBE本体の開発環境を整える(Postgres,MailCatcher編)]
(https://qiita.com/junpeko5/items/ef572490c44da90eac59)です。
参考