Docker Hub の PHP イメージ
August 22, 2020
ポータブルな PHP 実行環境が欲しくて Docker Hub の PHP イメージを眺めるメモ。
CLI で実行するサンプル #
docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php my-script.php
my-script.php
は以下の通り。
<?php
echo "hello\n";
実行結果。
$ docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php my-script.php
hello
インストール済みのモジュールや phpinfo() を確認する #
php -m
php -i
Extensions をインストールするには以下らへんが利用できるらしい。必要になった時のためにメモだけ。
docker-php-ext-configure
docker-php-ext-install
docker-php-ext-enable
例えば GD extension をインストールしたイメージを用意するには以下のような Dockerfile を用意すれば良いと。
FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
PECL extensions をインストールする場合はこう。
FROM php:7.4-cli
RUN pecl install redis-5.1.1 \
&& pecl install xdebug-2.8.1 \
&& docker-php-ext-enable redis xdebug
php.ini ファイル #
$PHP_INI_DIR/php.ini
にある。同様に、
$PHP_INI_DIR/php.ini-development
$PHP_INI_DIR/php.ini-production
も同梱されている。 php-ini
を上書きするか、これらをベースにして $PHP_INI_DIR/conf.d/
以下に突っ込めばカスタマイズ可能。
イメージの種類 #
4つある。
php:<version>-cli
php:<version>-apache
php:<version>-fpm
php:<version>-alpine
Web サーバーサイドやるならば apache
or fpm
の2択。ただし fpm
の方は Nginx などの Reverse Proxy を置いてあげる必要ある。
PHP 学習用のイメージ&実行方法はこれだ! #
文法や言語仕様を確認するなら CLI で良さそう。
docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php my-script.php
Web サーバーサイドの場合は Apache を使う。カレントディレクトリをコンテナ側の Apache ドキュメントルートに配備します。
docker run -p 80:80 -v "$PWD":/var/www/html php:7.4-apache
確認。
$ curl http://localhost/my-script.php
hello
良さそう。
良さそうなので ~/.bash_profile
に関数登録しておいた。
function php-cli {
docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php "$@"
}
function php-apache {
docker run -p 80:80 -v "$PWD":/var/www/html php:7.4-apache
}