php-fpm alpine の docker image を動かす際の覚書

利用するベース Docker image

php:8.1-fpm-alpine Docker Hub

作成する Dockerfile とビルド

Dockerfile の設定は最小限。

Dockerfile

FROM php:8.0-fpm-alpine

RUN echo "<?php echo 'Hello World!'; " > /var/www/html/index.php 

COPY index.php /var/www/html/index.php

ビルドコマンド

# build image
$ docker build --pull --rm -t fpmtest:latest -f Dockerfile .  

# run container and forward port
$ docker run -p 9000:9000 -d fpmtest:latest

php-fpm 単体での動作確認

php-fpm への接続は unix ドメインソケットか TCP(デフォルト)で行う必要がある http 接続には対応していないため、php-fpm 単体では curl による動作確認は不可能。 curl の代わりに cgi-fcgi というコマンドで動作確認ができる。

# install for Mac OS
$ brew install fcgi

# request to php-fpm
$ SCRIPT_NAME=index.php\
  SCRIPT_FILENAME=/var/www/html/index.php\
  REQUEST_METHOD=GET\
  cgi-fcgi -bind -connect 127.0.0.1:9000
X-Powered-By: PHP/8.0.18
Content-type: text/html; charset=UTF-8

Hello World!%

(参考)fcgi コマンドでターミナルから php-fpm(FastCGI)の動作を確認する - Qiita

設定ファイル

php:8.1-fpm-alpine image では、phpphp-fpm の設定ファイルは以下の場所にある。

/var/www/html # ls /usr/local/etc/
pear.conf             php                   php-fpm.conf          php-fpm.conf.default  php-fpm.d

/usr/local/etc/php-fpm.d/www.conf に、9000 port で listen する設定などがある

(抜粋)

listen = 127.0.0.1:9000