Dockerを用いてNginx+PHP環境を構築

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:9000phpはComposeのサービス名,9000はphpのポートを指定します.

下記コマンドで,設定を反映します.


/etc/init.d/nginx reload

ブラウザで,localhost:8888/index.phpにアクセスし,次のように表示されれば設定完了です.

まとめ

この記事では,Dockerを用いてNginx+PHPサーバを構築する手順を示しました.

この環境で,PHPアプリケーションの開発等を行うことが可能です.

よかったらシェアしてね!
目次