忙しい人向けの Docker Composeで作る nginx + PHP7-fpm + mysql + phpMyAdmin の環境構築
2017.02.13
この記事は最終更新日から1年以上が経過しています。
どもです。
Dockerは、起動も早くて便利ですよね。
でも、ちょっとしたPHPの実行環境の為に、
いちいちVirtualBoxでVagrantを立ち上げて、イメージをDockerHubから、pullしてコンテナ作って、Docker commitして…
という作業はしたくはないものですね。。。
という事で、今回は「YAMLファイル」一つ(厳密には他ファイルもありますが)で、
nginx + PHP7-fpm + mysql + phpMyAdmin の環境構築を行う方法をご紹介します。
環境
OS X El Capitan 10.11.6
Docker version 1.13.0
Docker Toolbox
今回は、「Docker」は何なのか、とかの「Docker」についての詳細は割愛させていただきます mm
そして、今回、何を行うかですが、ざっと以下の様な流れで環境構築を行います。
・Docker Toolboxをインストール
Docker Toolboxをインストールし、Docker Quickstart Terminalを起動。
・設定ファイルを用意
nginx + PHP7-fpm + mysql + phpMyAdmin の環境構築を行うための「YAMLファイル」を用意します。
と、シンプルにこの構成で行います。
docker、docker-compose、docker-machineコマンド等の詳細も割愛させていただきますのでご了承ください mm
といったわけで、早速、Docker Toolboxをインストール。
Docker Toolboxをインストール
公式サイトを参照してDocker Toolboxをインストールしましょう。
https://www.docker.com/products/docker-toolbox
Mac、Win 各環境に合わせてダウンロードします。
Docker Toolboxをインストールし、Docker Quickstart Terminalを起動します。
アプリケーション > docker 内にアイコンがありますので、ダブルクリックで起動できます。
ダブルクリックで起動。
このようにターミナルに表示すればOKです!
それでは早速、nginxから起動していきましょう。
nginx
今回やりたいことは、「docker-compose.yml」を用意してその設定で色々と起動していきます。
まずは「nginx」からとなります。
docker-compose.yml
version: '2' services: web: image: nginx:latest ports: - "8080:80"
docker-compose.ymlファイルを作成して docker-compose up コマンドを実行。
$ docker-compose up -d
初回はダウンロードで時間がかかります。
docker-compose ps コマンドで実行しているプロセスの確認ができます。
$ docker-compose ps
〇〇_web_1 nginx -g daemon off; Up 443/tcp, 0.0.0.0:8080->80/tcp
こんな感じで、statusがUpになっていれば起動成功。
ブラウザで確認。
nginxの起動画面が確認できれば成功!
続いて、ドキュメントルートとなるディレクトリを作成してドキュメントルートの設定を行います。
docker-compose.yml
version: '2' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./code:/code
「code」ディレクトリを作成。
volumesの値も「- ./code:/code」を追加します。
nginxの設定ファイルとして、site.confを作成します。
site.conf
server { index index.html; server_name localhost; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /code; }
site.confを読み込むように更に追加。
version: '2' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./code:/code - ./site.conf:/etc/nginx/conf.d/default.conf
code/index.html ファイルを作成。
再び、docker-compose up コマンドを実行。
$ docker-compose up -d
ブラウザ確認。http://192.168.99.100:8080/で、先程作成した「index.html」が表示したら成功!
PHP7-fpm
続いて、PHP7の環境を作るため、PHP7とphp-fpmのimageを追加していきます。
docker-compose.yml
version: '2' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./code:/code - ./site.conf:/etc/nginx/conf.d/default.conf links: - php php: image: php:fpm
docker-compose.ymlにphpのimageを追加していきます。
site.conf
server { index index.php index.html; server_name localhost; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /code; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
site.confにphp-fpmが 9000ポートで立ち上がるように設定を追加。
先程の「index.html」を「index.php」に変更し、phpinfoを記述します。
index.php
<?php echo phpinfo();
再び、docker-compose up コマンドを実行。
$ docker-compose up -d
ブラウザ確認。http://192.168.99.100:8080/で、以下の様にphpinfoが表示したら成功!
mysql & phpMyAdminを追加
よし、サクサク行きます。
最後に、mysqlとphpMyAdminを追加していきます。
phpMyAdminはポート8080を使用して起動しようと思いますので、nginxのポートを80で立ち上げます。
その為、若干 「docker-compose.yml」を修正しつつ、mysqlとphpMyAdminを追加していきます。
docker-compose.yml
version: '2' services: web: image: nginx:latest ports: - "80:80" volumes: - ./code:/code - ./site.conf:/etc/nginx/conf.d/default.conf links: - php - mysql:db php: image: php:fpm volumes: - ./code:/code - ./log.conf:/usr/local/etc/php-fpm.d/zz-log.conf mysql: image: mysql:5.7.11 environment: - MYSQL_ROOT_PASSWORD=root phpmyadmin: image: phpmyadmin/phpmyadmin:4.5.3.1-1 ports: - "8080:8080" links: - mysql:db
nginxと、phpMyAdminの方に「links」でmysql:dbを追加しております。
この設定で、再び、docker-compose up コマンドを実行。
$ docker-compose up -d
ブラウザ確認。http://192.168.99.100:8080/で、以下の様にphpMyAdminが表示したら大成功!!
と、駆け足でしたが、忙しい人向けに、docker-composeを使えば、nginx + PHP7-fpm + mysql + phpMyAdmin の環境構築をサクッと用意できて良いですね!
dockerの詳細について書いても行きたいのですが、出遅れ感もありますのでw
機会があればと。。
今回の設定ファイルのソースは、Githubの方にもUPしておりますので、更に忙しい人は git cloneして、docker-compose upコマンドですぐ立ち上がるかと思います。
github
https://github.com/webcyou/docker-nginx-php7
ではではぁ。
(どうも、シンタックスハイライトのプラグインの調子が悪く、ソースが見づらい状態となっておりますが、
現在、サーバー移行 & 環境再構築中なので、その際に直りますのでしばしご勘弁を。申し訳ありません。。mm)