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

Archives Details

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

Docker

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

2018年 Docker 使い方 まとめ その3

2018.12.17

2018年 Docker 使い方 まとめ その2

2018.12.16

2018年 Docker 使い方 まとめ その1

2018.12.15

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

2017.02.13

CATEGORY LIST

LATEST NEWS

Mac 容量足りない問題は、外付けSSDで快適に解決!おすすめ外付けSSD

mac

2024.10.16

Z80エミュレータ- EMUZ80の組み立て

電子工作

2024.10.13

Mac VSCodeで、SFML C++開発環境を作る。

C++

2024.09.09

Rust-SDL2 examplesをすべて試す

Rust

2024.09.01

JavaScriptで、DOMを放り投げる処理

JavaScript

2024.07.27

Rustで創る MOS 6502 CPU その2

Rust

2024.07.23

Rustで創る MOS 6502 CPU その1

Rust

2024.07.19

汎用 3D mesh/model viewerを求め。と、簡単に、FBXファイルをglTF(glb)に変換ツールを求め。

C++

2024.06.06

M1 Macで、OpenGL GLUTを使ってコンパイルする

C

2024.04.27

Rust - Actix Web mongo ユーザー登録 JWT認証

Rust

2024.03.24

Rust - Actix Web JWT 認証認可 APIの作成

Rust

2024.02.25

Rust - Actix Web × JSON 静的ファイルをAPIで返却

Rust

2024.01.19

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

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

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

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

FOLLOW US