最も古い、現在利用可能な PHP(Apache同梱版) の Docker Image は 5.5 だった

PHP の場合、下記に現在サポート対象となっている PHP の公式 Docker Image タグ一覧が記載されている。

2021-08-05 現在、上記ドキュメントをみる限り、サポートされている中で 最も古い Apache同梱版 は php:7.3.29-apache である。つまり、PHP5系 はそもそもサポートされていない。ただ、PHP自体が 5系の中の最終版である PHP5.6 ですら公式にサポートが終了していることを考えると、Docker Image のほうもサポートが終了していることはむしろ当然と言える。

しかし、PHP5系 の Docker Image はサポート終了しているだけであり、Docker Hub 上では 5系の Docker Image は一部まだ公開されている。つまり、ダウンロードしてビルドできる、ということである。調べてみたところ、 Apache同梱版の中で、現在取得できる最も古いバージョンは php:apache-5.5 だった。(パッチバージョンまでは調べていない)

ちなみに php-apache-5.5 より古いバージョン、例えば php-apache-5.4 を指定して

Dockerfile
FROM php:5.4-apache

Docker Image の取得を試みたところ、次のエラーメッセージが出て失敗した。

$ docker-compose up -d
# Docker Compose is now in the Docker CLI, try `docker compose up`
# Building php
# [+] Building 1.4s (5/7)                                                                                                                                                                                                                                                    
#  => [internal] load build definition from Dockerfile                                                                                                                                                                                                                  0.0s
#  => => transferring dockerfile: 1.17kB                                                                                                                                                                                                                                0.0s
#  => [internal] load .dockerignore                                                                                                                                                                                                                                     0.0s
#  => => transferring context: 2B                                                                                                                                                                                                                                       0.0s
#  => [internal] load metadata for docker.io/library/php:5.4-apache                                                                                                                                                                                                     1.1s
#  => [internal] load build context                                                                                                                                                                                                                                     0.0s
#  => ERROR [1/3] FROM docker.io/library/php:5.4-apache@sha256:298f2295509309262b0daaa27e15e3682437d0210128f66d482381255b907582                                                                                                                                         0.0s
#  => => resolve docker.io/library/php:5.4-apache@sha256:298f2295509309262b0daaa27e15e3682437d0210128f66d482381255b907582                                                                                                                                               0.0s
# ------
#  > [1/3] FROM docker.io/library/php:5.4-apache@sha256:298f2295509309262b0daaa27e15e3682437d0210128f66d482381255b907582:
# ------
# failed to load cache key: invalid empty config file resolved for docker.io/library/php:5.4-apache@sha256:298f2295509309262b0daaa27e15e3682437d0210128f66d482381255b907582
# ERROR: Service 'php' failed to build : Build failed

docker compose up を使え、と促されているが、つい手癖で docker-compose up と入力してしまう。

PHP 5.4 以前の Docker環境を作成したい場合

PHP5.4 以前の特定のバージョンをであることが必須要件ならば、下記のような Linuxディストリビューション をベースイメージとしてビルドし、そのコンテナ内にて自分で PHP5.x をインストールするのが確実だと思う。

PHP5.0PHP5.4 の中のいずれかを取得したい場合で、マイナーバージョンが違う程度の差異が容認できるのであれば PHP5.5(つまり php:apache-5.5 )で妥協するというのも、ひとつの手。

ただ、最初にも書いたことだが、PHP5系は そもそも最新の PHP5.6 ですらサポートが切れている。特段の事情がない限りは、サポート内の PHP7.3 以降、可能であれば PHP8.0 以降を使うべきである。

余談

php:5.5-apache では vim-gtk3 がデフォルトではインストールできない。 代わりに vim-gnome をインストールするのが早い。

執筆日:
本記事のタグ