Dockerを使い、Nginx + PHP7-FPMの環境を構築する方法です。
環境
- macOS: 10.15.5
- Docker: 19.03.8
ファイル構成
- docker-compose.yml
- nginx
- conf.d
- default.conf
- html
- index.php
手順
まずdocker-compose.yml を以下のように記述します。Nginxは安定版、PHP-FPMはバージョン7系の最新版を指定しています。
version: '3'
services:
web:
image: nginx:stable
depends_on:
- php
ports:
- '8080:80'
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./html:/var/www/html
php:
image: php:7-fpm
volumes:
- ./html:/var/www/html
次にNginxのデフォルトサーバー設定である nginx/conf.d/default.conf を以下のように記述します。fastcgi_pass php:9000 の部分でFastCGIにphpコンテナを指定しています。
server {
listen 80;
server_name 127.0.0.1;
root /var/www/html;
index index.php;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
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;
}
}
ドキュメントルート上の html/index.php は以下のように記述します。
<?php echo 'hello php';
以上で準備が整いましたので、Dockerコンテナを起動します。
$ cd {当ディレクトリ}
$ docker-compose up
ブラウザで localhost:8080 にアクセスし、”hello php”と表示されれば成功です。
Dockerコンテナを終了するには次のようにします。
$ docker-compose down
以上です。