2
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本体の開発環境を整える(Postgres,MailCatcher編)

Last updated at Posted at 2019-08-05

EC-CUBE4の環境構築続きです。
【EC-CUBE4】①EC-CUBE本体の開発環境を整える(インストール編)
【EC-CUBE4】②EC-CUBE本体の開発環境を整える(GitHub Flow編)
[【EC-CUBE4】③EC-CUBE本体の開発環境を整える(MYSQL,MailCatcher編)]
(https://qiita.com/junpeko5/items/3316b654b4b80ee59376)

前提条件

方針

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は下記の用な感じです。

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

参考

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