18
21

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.

Docker for Macで最新版EC-CUBE ローカル環境構築

Last updated at Posted at 2018-02-11

はじめに

なかなかなかったのでEC-CUBEをDocker for Macを使ってローカル環境を試しに構築してみました。

環境

MySQL 5.6.39
PHP 7.1.14
WEBサーバー Apache/2.4.10 (Debian) 
EC-CUBE 3.0.15

#ステップフロー

  1. EC-CUBE最新版をローカルにダウンロード
  2. Dockerインストール
  3. MySQLのイメージ・コンテナの用意
  4. DBの準備
  5. PHP7.1-apacheの用意
  6. PHPカスタマイズ(ライブラリ、モジュールなどをインストール)
  7. カスタマイズしたPHPのイメージの作成
  8. EC-CUBEコンテナの用意
  9. htmlを外してEC-CUBEをインストール
  10. phpMyadminコンテナの作成
  11. まとめ

#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をインストール
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を利用して高速かつ、簡単に本番と同じ環境が作れるので、とても便利です。

また、インストールやオプションの説明などは他のサイトの説明がわかりやすいので割愛させていただきましたが、コンテナの作成を間違えてもとりあえず削除して、簡単にやりなおすことができるので失敗しても一旦なかったこと(削除)して新しくチャレンジできます。

今回は新規の構築でしたが、本番と同じ物を作成する手順なんかもやってみたいです。

18
21
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
18
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?