Nginxのコンテナには,PHP環境が導入されていません.
NginxコンテナにPHP環境をインストールすることも可能ですが,コンテナを利用する以上,PHPコンテナと接続して環境を作成したほうが良いです.
ここでは,Docker Composeを利用して,NginxコンテナとPHPコンテナを接続し,Nginx+PHPのサービスを実現します.
目次
コンテナの用意
NginxとPHPのコンテナ間でサービスの連携を行うので,Docker Composeを用います.
使用するコンテナは,それぞれ最新のNginxとPHP-FPMです.
docker-compose.yml
version: "3"
services:
nginx:
image: nginx:latest
ports:
- 8888:80
volumes:
- vol_web:/usr/share/nginx/html
php:
image: php:fpm
ports:
- "9000:9000"
volumes:
- vol_web:/usr/share/nginx/html
volumes:
vol_web:
Nginxコンテナでは,/usr/share/nginx/html
がドキュメントルートに設定されています.NginxとPHP間でファイルの共有を行うためにVolumeの設定を行っています.
下記コマンドで,コンテナを立ち上げます.
docker compose up -d
NginxとPHPの連携
コンテナを立ち上げただけでは,NginxとPHPの連携は完了していません.
Nginxコンテナで/etc/nginx/conf.d/default.conf
を下記のように編集します.
/etc/nginx/conf.d/default.conf
...
location / {
root /usr/share/nginx/html;
index index.php;
}
...
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
...
fastcgi_pass php:9000
のphp
はComposeのサービス名,9000はphpのポートを指定します.
下記コマンドで,設定を反映します.
/etc/init.d/nginx reload
ブラウザで,localhost:8888/index.php
にアクセスし,次のように表示されれば設定完了です.
まとめ
この記事では,Dockerを用いてNginx+PHPサーバを構築する手順を示しました.
この環境で,PHPアプリケーションの開発等を行うことが可能です.