【docker】nginx php-fpm

docker で nginx、php-fpm でphpの実行環境を作成します。

フォルダ構成

以下の構成とします。

.
├── docker-compose.yml
├── app
│   └── docker
│       └── Dockerfile // php-fpmのdockerファイル
├── web
│   └── docker
│       ├── conf
│       │   └── default.conf // nginxの設定ファイル
│       └── Dockerfile // nginxのdockerファイル
└── src
    └── index.php // 実行する php スクリプトファイル

各ファイルについて

docker-compose

今回使用する docker-compose.yml は以下の通りです。

docker-compose.yml

services:
  # Nginx Service
  web:
    container_name: web-service
    build:
      context: .
      dockerfile: ./web/docker/Dockerfile
    ports:
      - "80:80"
    depends_on:
      - app

  # PHP Service
  app:
    container_name: app-service
    build:
      context: .
      dockerfile: ./app/docker/Dockerfile
    volumes:
      - ./src:/var/www/html

WEBサーバ – nginx

nginxのdockerファイル

今回webサーバにnginxを使用します。nginxのdockerイメージを使用し、dockerコンテナを作成します。

Dockerfile

FROM nginx:latest

# nginx設定ファイル
COPY ./web/docker/conf/default.conf /etc/nginx/conf.d/default.conf

nginx設定ファイル

nginx設定ファイルは以下の通りです。

default.conf

server {

    # ポート番号
    listen 80;

    # サーバ名
    server_name localhost;

    # ドキュメントルート
    root /var/www/html;
    
    # インデックスディレクティブ
    index index.php index.html;
    
    # 文字コード
    charset utf-8;
    
    # ファイル確認ディレクティブ
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    # ------------------------
    # php-fpm の設定
    # ------------------------
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass app-service:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

fastcgi_pass

fastcgi_pass にはphp-fpmを起動するdockerコンテナ名を指定します。ポートは9000を指定します。

なお、php-fpmの設定については以下も参考にして下さい。

php-fpmコンテナ

今回はphpを実行する為にphp-fpmを使用します。その為のphp-fpmコンテナを作成します。

Dockerfile

# ベースイメージ
FROM php:8.4-fpm

実行する php スクリプト

今回実行するphpスクリプトは以下の通りです。

index.php

<?php
phpinfo();

コンテナ作成

dockerコンテナを作成します。

ビルド

docker-compose build

コンテナ生成

docker-compose up -d

コンテナ生成の確認

docker-compose ps

動作確認

以下をブラウザで実行すると、php情報画面が確認出来ます。

http://localhost/

最後に

一応、コンテナの削除コマンドは以下の通りです。

docker-compose stop
docker-compose rm
© DeNnie.Lab All Rights Reserved.