Docker と Nginx + PHP-FPM を使用した簡単な PHP 環境の構築

2024/08/21に公開

はじめに

本記事では、DockerとDocker Composeを使用して、NginxとPHP-FPMを組み合わせたシンプルなPHP実行環境を作成する方法を紹介します。

プロジェクト構成

.
├── docker-compose.yml
├── docker
│   ├── nginx
│   │   └── nginx.conf
│   └── php-fpm
│       └── Dockerfile
└── src
    └── index.php

環境構築

Dockerfile の作成

PHP 8.2 の環境を Docker で構築します。この環境でPHP-FPMが動作するように設定します。

FROM php:8.2-fpm

WORKDIR /var/www/html

# PHPのソースコードをコンテナにコピー
COPY . .

# PHP-FPMを起動
EXPOSE 9000
CMD ["php-fpm"]

nginx.conf の作成

Nginx の設定ファイルを作成し、PHP-FPMと連携させます。

# docker/nginx/nginx.conf
server {
    listen 80;

    server_name localhost;

    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

docker-compose.yml の作成

NginxとPHP-FPMのサービスを定義し、Docker Composeで簡単に管理できるようにします。

version: '3.8'

services:

  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
      - ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php-fpm

  php-fpm:
    build:
      context: ./docker/php-fpm
    volumes:
      - ./src:/var/www/html

index.php の作成

シンプルなPHPスクリプトを作成して、動作確認を行います。
[src/index.php の内容]

<?php
phpinfo();

環境の起動と確認

  1. Docker環境を起動:
    docker-compose up -d
    

2.ブラウザでhttp://localhost:8080にアクセスします。PHPのphpinfo()ページが表示されれば、環境が正しく構築されていることが確認できます。

まとめ

このプロジェクトでは、Dockerを使用してNginxとPHP-FPMを組み合わせたシンプルなPHP実行環境を構築しました。

主なポイント:

  • NginxとPHP-FPMをDockerでセットアップ
  • シンプルなindex.phpで環境の動作確認

おわりに

DockerとDocker Composeを使用することで、PHPの実行環境を簡単にセットアップできます。NginxとPHP-FPMの組み合わせは、パフォーマンスと安定性を求めるPHPアプリケーションに最適です。このセットアップをベースに、さらに高度なアプリケーションを開発・展開していくことが可能です

Discussion