はじめに
なかなかなかったのでEC-CUBEをDocker for Macを使ってローカル環境を試しに構築してみました。
環境
| MySQL | 5.6.39 |
|---|---|
| PHP | 7.1.14 |
| WEBサーバー | Apache/2.4.10 (Debian) |
| EC-CUBE | 3.0.15 |
ステップフロー
- EC-CUBE最新版をローカルにダウンロード
- Dockerインストール
- MySQLのイメージ・コンテナの用意
- DBの準備
- PHP7.1-apacheの用意
- PHPカスタマイズ(ライブラリ、モジュールなどをインストール)
- カスタマイズしたPHPのイメージの作成
- EC-CUBEコンテナの用意
- htmlを外してEC-CUBEをインストール
- phpMyadminコンテナの作成
- まとめ
1. EC-CUBE最新版をローカルにダウンロード
最新版のEC-CUBEを置きたいところまで移動する
$ cd ディレクトリ名
EC-CUBEを置きたいディレクトリ内で
$ curl -O http://downloads.ec-cube.net/src/eccube-3.0.15.zip
そのままzipファイルを展開します
$ unzip eccube-3.0.15.zip
※ 展開したファイルはFinderまたはお使いのエディタなどで任意に移動してください。また、場合によってはここでオーナーやファイルのパーミッションの変更する必要があります
2. Dockerインストール
Install Docker for Mac
上記URLから「Stable channel(安定しているバージョン)」か「Edge channel(開発中のバージョン)」をインストールします
※インストール手順については割愛させていただきます
dockerが正常にインストールできたかを確認
$ docker --version
と入力して
Docker version 17.12.0-ce, build c97c6d6
などと表示されればOK
3. MySQL5.6のイメージ・コンテナの用意
$ docker run --name mysqlのコンテナ名 -e MYSQL_ROOT_PASSWORD=rootのパスワード -d mysql:5.6
docker run はイメージを元にコンテナを作成します。今回は初期の状態を想定しているのでmysqlのイメージはありません。ない場合はDocker Hubよりイメージを取得し、コンテナを作成してくれます。
※tagの指定がない場合はlatestバージョンが使用されます。
mysql5.6が正常に作成できたか確認します
$ docker exec -it コンテナ名 bash
で「コンテナ名」のコンテナに入ります
mysql -u root -p
を入力し「rootのパスワード」を入力しmysqlを確認します
SHOW DATABASES;
などで現在あるDBを表示できればOKです
4. DBの準備
データベースの作成
CREATE DATABASE データベース名 CHARACTER SET utf8;
※新しいユーザーが必要な場合はroot権限と同じ条件のユーザーを作成しておきます
exit2回でMySQLとコンテナから出ます
コンテナのIPアドレスを調べる
$ docker ps | awk 'NR>1&&$0=$1' | xargs -n 1 docker inspect -f "{{.Name}} {{.NetworkSettings.IPAddress }}"
起動中のコンテナのIPアドレス一覧が表示されます
※mysqlのコンテナIPはEC-CUBEをインストールする際に使用しますので、メモをしておいてください
5. PHP7.1-apacheの用意
今度は$ docker runではなく
$ docker pull php:7.1-apache
でphp:7.1-apacheのイメージを作成します
6. PHPカスタマイズ(ライブラリ、モジュールなどをインストール)
作成したphp:7.1-apacheのイメージにはEC-CUBEに必要なライブラリやモジュールが無いので、ライブラリやモジュールが使えるようにカスタマイズします
Dockerfileの作成(7.1-apacheのイメージを使用して)
ローカルの任意の場所にDockerfileを作成
dockerのphp:7.1-apacheには以下の記述でOK
詳細は割愛します
FROM php:7.1-apache
RUN apt-get update && \
apt-get install -y \
zlib1g-dev \
&& docker-php-ext-install pdo_mysql mysqli mbstring zip \
&& a2enmod rewrite
7. カスタマイズしたPHPのイメージの作成
$ docker build -t カスタマイズしたイメージ名 Dockerfileのパス
8. EC-CUBEコンテナの用意
カスタマイズしたイメージを使用して$ docker runします
$ docker run --name eccubeのコンテナ名 --link mysqlのコンテナ名:mysql -p 8080:80 -v eccubeのローカルディレクトリパス:/var/www/html -d カスタマイズしたイメージ名
ブラウザでアクセス
http://127.0.0.1:8080/html/
Forbidden(403)がでたら
ローカル環境のEC-CUBEディレクトリ内の
html > .htaccess
# Options +FollowSymLinks +SymLinksIfOwnerMatch
の「#(コメントアウト)」を外す
9. htmlを外してEC-CUBEをインストール
指定のファイルを移動し変更したらブラウザで再度アクセスしインストールを開始
http://127.0.0.1:8080/
※インストール手順は割愛します
DBは以下の通りです
| 項目名 | 内容 |
|---|---|
| データベースの種類 | MySQL |
| データベースのホスト名 | mysqlのコンテナIP |
| ポート番号 | 3306 |
| データベース名 | 作成したDB名 |
| ユーザ名 | rootまたは、root権限と同じ権限で作成した新しいユーザー |
| パスワード | rootパスワードまたは、root権限と同じ権限で作成した新しいユーザーのパスワード |
10. phpMyadminコンテナの作成
DBを閲覧したり、編集したい場合はphpMyadminを入れるかDB接続ツールを使用します
DB接続ツールの場合はコンテナのIPアドレスを利用して外部からの接続が可能になります
今回は$docker runでphpMyadminです
$ docker run --name phpmyadmin用のコンテナ名 -d --link mysqlのコンテナ名:db -p 8888:80 phpmyadmin/phpmyadmin
ブラウザでアクセスしてrootまたは、root権限と同じ権限で作成した新しいユーザーでログイン
http://127.0.0.1:8888/
まとめ
Macのローカル環境を構築するのに、MAMPを入れたり、PHPを使えるように設定したりと様々な方法がありましたが、docker for Macを利用して高速かつ、簡単に本番と同じ環境が作れるので、とても便利です。
また、インストールやオプションの説明などは他のサイトの説明がわかりやすいので割愛させていただきましたが、コンテナの作成を間違えてもとりあえず削除して、簡単にやりなおすことができるので失敗しても一旦なかったこと(削除)して新しくチャレンジできます。
今回は新規の構築でしたが、本番と同じ物を作成する手順なんかもやってみたいです。