はじめに
勤め先でもPHPを使っており自宅でPHPを勉強するために、ローカルでPHP開発環境を整えることにしました。
MAMP(マンプ)でも良いかなと思いましたが、せっかくなのでDockerで作ってみます。
(開発中に色々詰まってしまったところがあるので、備忘録がわりのメモです。)
手順
- Dockerによる環境構築
- ファイル・ディレクトリの準備
- 各ファイルの作成
- コンテナを起動
- サイトにアクセス
1. Dockerによる環境構築
Dockerを使うには、「Docker for Mac」のインストールが必要です。
Qitaに素敵な記事がたくさんあるので、ここでの説明は省略します。
今回はDockerで以下のコンテナを使います。
- nginx
- PHP
- MySQL
- PHPMyAdmin
使用するコンテナが複数あるので、今回は「Docker Compose」を使って環境を作っていきます。
2. ディレクトリ・ファイルの準備
Dockerを起動する場所を作成しましょう。
まずはフォルダを1つ用意し、次のようなファイル構造となるようにしてください。
用意するフォルダは何でも良いのですが、今回は「php-test」という名前で作成します。
php-test/
├── docker-compose.yml
├── mysql/
│ └── data/
├── nginx/
│ └── nginx.conf
├── php/
│ ├── Dockerfile
│ └── php.ini
└── www/
└── html/
└── index.php
3. 各ファイルの作成
用意したファイルの中身を作成していきます。
中身を作成するファイルは、docker-compose.yml
、nginx.conf
、Dockerfile
、php.ini
、index.php
の5つです。
docker-compose.yml
version: '3'
services:
nginx:
image: nginx:latest
ports:
- 8080:80
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
- ./www/html:/var/www/html
depends_on:
- php
php:
build: ./php
volumes:
- ./www/html:/var/www/html
depends_on:
- db
db:
image: mysql:5.7
ports:
- 13306:3306
volumes:
- ./mysql/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
ports:
- 8888:80
depends_on:
- db
nginx.conf
server {
listen 80;
server_name _;
root /var/www/html;
index index.php index.html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Dockerfile
FROM php:7.2-fpm
COPY php.ini /usr/local/etc/php/
RUN docker-php-ext-install pdo_mysql
php.ini
date.timezone = "Asia/Tokyo"
index.php
設定情報を確認するためにphpinfo();
としていますが、なんでもいいです。
<?php
phpinfo();
?>
4. コンテナを起動
いよいよコンテナ起動です。
ターミナルを開き、docker-compose.yml
があるフォルダ(今回はphp-test)に移動します。
下記コマンドで、php-testフォルダに移動。
cd php-test
下記コマンドで、コンテナを起動。
docker-compose up -d
以下のような記述がターミナル内に表示されたら、起動は成功です。
Creating php_01_db_1 ... done
Creating php_01_phpmyadmin_1 ... done
Creating php_01_php_1 ... done
Creating php_01_nginx_1 ... done
なお下記コマンドで、コンテナを停止できます。
docker-compose stop
5. サイトにアクセス
最後にサイトにアクセスします。
それぞれ下記画像のような画面が表示されたら、成功です。
お疲れ様でした。
Webサイト:http://localhost:8080/
ユーザー名:root
パスワード:secret
以上です。
最後までお読みいただき、ありがとうございました。
お世話になったサイト
- [PHP]DockerでPHP, MySQL(MariaDB), nginxを使ったローカル開発環境を構築する
- Docker Composeでphpでmysqlにアクセスする
- docker-composeでPHPとMySQLを連携させてみる
- Docker ドキュメント
【補足】Qitaに投稿されているDockerインストール記事
下記の中から自分に合いそうなものを1つ選んで、進めてみると良いと思います。