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

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

Rust - Actix Web × MongoDB環境をサクッと起動

Rust

2024.01.18

5分で学ぶ RustでWave Function Collapse (波動関数崩壊アルゴリズム)

Rust

2024.01.15

LLaMAモデル GGMLフォーマット(llama.cpp)をRustフレームワーク Leptosを用いて M1MacMiniでサクッと動かす。

Rust

2024.01.11

2024年 狙っているモバイルノートPC

tool

2024.01.07

MacOS XcodeにSDL2を追加

tool

2023.12.26

php 7.4にアップデート

PHP

2023.12.24

5分で覚える Flutter Flameで作る Wave Function Collapse - 波動関数崩壊アルゴリズム

AI・Bot・algorithm

2023.12.20

Flutter - Flameでゲーム作成 (キャラクターの移動)

Flutter

2023.07.23

Flutterで作る ChatGPT Prompt Manager

Flutter

2023.07.12

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

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

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

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

FOLLOW US