Docker(docker-compose) を使って PHP / MySQL 開発環境構築


Docker を使えばコンテナ単位で作りたい環境をサクッと作れます。
今回は Mac、Windows それぞれで利用できる PHP/MySQL の開発環境構築手順について解説します。

Docker や Docker Compose について触ったことはあり理解はしているが、手順を忘れたので確認した方向けの記事です。

前提として Docker Desktop がインストール済みの状態を想定しています。
動作確認は以下のOSで行いました。

  • macOS Catalina バージョン 10.15.17
  • エディション Windows 10 Home

※ Windows の場合は WSL2 をインストールが必要です。

概要(フォルダ構成)

以下のフォルダ構成で PHP / MySQL の環境を構築します。

├ docker-compose.yml
├ html
│ └ index.php
└ php.ini

index.php では動作を確認するため phpinfo() を出力するようにします。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>test</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<?php phpinfo(); ?>
</body>
</html>

一応 php.ini の設定も書いておきます。

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

docker-compose の作成

利用したい docker イメージや設定ファイルを指定することで動作します。
今回は php:7.2-apache という公式のイメージを利用します。

version: '3'

services:
  php:
    image: php:7.2-apache
    volumes:
      - ./php.ini:/usr/local/etc/php/php.ini
      - ./html:/var/www/html
    ports:
      - 8080:80
  mysql:
    image: mysql:5.5
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=test
			- TZ=Asia/Tokyo
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=test
      - PMA_PASSWORD=test
    ports:
      - 4040:80
    volumes:
      - ./phpmyadmin/sessions:/sessions

動作確認

このコマンドで Docker Compose を使ってコンテナを作成し起動できます。簡単ですね。

docker-compose up -d 

コマンドは以下の意味しています。

  • docker-compose up:docker-compose.yml をもとにコンテナの構築、作成、起動を行う。
  • -d:バックグラウンド実行オプション。


処理が終わると mysql, phpmyadmin フォルダが作成されます。

PHPの動作チェックのため http://localhost:8080/ にアクセスします。

MySQL & phpMyAdmin の動作チェックのため http://localhost:4040/ にアクセスします。

それぞれ正しく表示されていればOKです。

まとめ

Docker Compose を使ってサクッと PHP / MySQL 環境を構築する手順について解説しました。
PHP を別バージョンで動かしたい、MySQL での検証を行いたい場面なので役立ちます。
参考になれば幸いです。