3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【EC-CUBE4】③EC-CUBE本体の開発環境を整える(MYSQL,MailCatcher編)

Last updated at Posted at 2019-08-02

EC-CUBE4の環境構築続きです。
【EC-CUBE4】①EC-CUBE本体の開発環境を整える(インストール編)
【EC-CUBE4】②EC-CUBE本体の開発環境を整える(GitHub Flow編)

前提条件

方針

DB、メールサーバーの作成

mysql用のdocker-compose.ymlをgithubで管理しています。
https://github.com/junpeko5/mysql-docker.git

docker-compose.ymlは下記の用な感じです。

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)です。

参考

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?