このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

忙しい人向けの Docker Composeで作る nginx + PHP7-fpm + mysql + phpMyAdmin の環境構築

tool

2017.02.13

この記事は最終更新日から1年以上が経過しています。

どもです。

Dockerは、起動も早くて便利ですよね。

でも、ちょっとしたPHPの実行環境の為に、

いちいちVirtualBoxVagrantを立ち上げて、イメージを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になっていれば起動成功。

ブラウザで確認。

http://192.168.99.100:8080/

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)

Comment

Related Article

CPU使用しすぎて、Conohaからサーバーシャットダウンされた件。

2018.03.28

春の大掃除。VHSに続いて、カセットテープもデジタル化!microSD保存 MP3変換プレーヤーを使ってみた。

2018.03.27

Macで、VHSダビング I-O DATA ビデオキャプチャー 「アナレコ」を使ってみた。

2018.03.27

無料でホームページ作成できるWixに新機能「Wix Code」 が追加!

2017.10.02

ドラクエ11(PS4)もプレイ可能!モバイルディスプレイ Diginnos DG-NP09D 8.9インチ を購入してみました!

2017.09.03

【簡単】iPhone Androidの画面をPCに表示や録画するアプリ。 Reflector2の使い方

2017.09.03

nginx location ディレクティブの優先度

2017.03.19

忙しい人向けの Docker Composeで作る nginx + PHP7-fpm + mysql + phpMyAdmin の環境構築

2017.02.13

誰でも簡単に「ホームページ制作」が行える!というWix のサービスを使ってみました。

2017.02.07

SketchファイルをGitHubで管理。簡単デザイン差分表示!「git sketch plugin 」利用法

2016.11.07

CATEGORY LIST

LATEST NEWS

安い!軽い!早い! ノートPC(開発環境)。 Chromebookをついに購入いたしました!

Chromebook

2018.07.22

debian & Xserver XDSLで FireFoxが真っ白のページとなる件

Linux

2018.07.08

Kindle Fire HD 8 にLinuxを導入して扱えるようにする。超コスパ Linux タブレット構築方法!!

Linux

2018.07.04

Laravel 4 を PHP 7 環境へ移行したお話。

PHP

2018.06.10

iPhoneXで、ubuntuを動かす。

サーバー

2018.06.09

仮想通貨(暗号通貨)の作り方 その2 (Gethの使い方)

暗号通貨、ブロックチェーン

2018.05.20

$PAC (パックコイン)Macでマスターノードを建てる方法

暗号通貨、ブロックチェーン

2018.05.14

ついに「ウェブ帳」リニューアルしましたぁ!!!(PC 版)

イベント

2018.05.07

Raspberry Pi 3 Model B+ 2018 ニューモデルを購入!!

RaspberryPi

2018.04.23

仮想通貨(暗号通貨)の作り方 その1

暗号通貨、ブロックチェーン

2018.04.09

iPad Proで開発を行いたい。

iPad

2018.03.29

CPU使用しすぎて、Conohaからサーバーシャットダウンされた件。

tool

2018.03.28

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US