Docker: Nginx+PHP7-FPMの環境を構築する方法

Dockerを使い、Nginx + PHP7-FPMの環境を構築する方法です。

環境

  • macOS: 10.15.5
  • Docker: 19.03.8

ファイル構成

- docker-compose.yml
- nginx
  - conf.d
    - default.conf
- html
  - index.php

手順

まずdocker-compose.yml を以下のように記述します。Nginxは安定版、PHP-FPMはバージョン7系の最新版を指定しています。

version: '3'
services:
  web:
    image: nginx:stable
    depends_on:
      - php
    ports:
      - '8080:80'
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./html:/var/www/html
  php:
    image: php:7-fpm
    volumes:
      - ./html:/var/www/html

次にNginxのデフォルトサーバー設定である nginx/conf.d/default.conf を以下のように記述します。fastcgi_pass php:9000 の部分でFastCGIにphpコンテナを指定しています。

server {
  listen 80;
  server_name 127.0.0.1;

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

  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;

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

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass php:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
  }
}

ドキュメントルート上の html/index.php は以下のように記述します。

<?php
echo 'hello php';

以上で準備が整いましたので、Dockerコンテナを起動します。

$ cd {当ディレクトリ}
$ docker-compose up

ブラウザで localhost:8080 にアクセスし、”hello php”と表示されれば成功です。

Dockerコンテナを終了するには次のようにします。

$ docker-compose down

以上です。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください