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/htmlWEBサーバ – nginx
nginxのdockerファイル
今回webサーバにnginxを使用します。nginxのdockerイメージを使用し、dockerコンテナを作成します。
Dockerfile
FROM nginx:latest
# nginx設定ファイル
COPY ./web/docker/conf/default.conf /etc/nginx/conf.d/default.confnginx設定ファイル
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