このサイトは、只今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

Jenkins 認証情報「Jenkinsマスター上の~/.sshから」が表示しない

2018.11.17

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

CATEGORY LIST

LATEST NEWS

Jenkins 認証情報「Jenkinsマスター上の~/.sshから」が表示しない

tool

2018.11.17

流れで、Raspberry Pi Zero WHを購入。気がつけばもうラズパイ4台。

RaspberryPi

2018.11.06

安く電子工作を始めるなら、電子パーツ購入は「aitendo」がおすすめ!

RaspberryPi

2018.11.06

ASUS Chromebook Flip C101PAに、Visual Studio Codeをインストール

Chromebook

2018.10.15

Chromebookに、Ubuntu (Xubuntu)をインストールしたあとの日本語入力設定

Chromebook

2018.10.14

ASUS Chromebook Flip C101PAに、Ubuntu (Linux)インストール手順

Chromebook

2018.10.10

nodeのない環境にnodeを導入(HTML5ゲームも提供)し続け、1年数ヶ月経過後、かなり開発環境が整ってきたお話。

JavaScript

2018.09.26

安い!軽い!早い! ノート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

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

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

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

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

FOLLOW US