Ubuntuコンテナにおける利用可能なPHPの version について

a bunch of purple flowers with water droplets on them

背景

PHPは広く使用されているオープンソースの汎用スクリプト言語で、特にWeb開発に適しています。Dockerコンテナ内で異なるバージョンのPHPが利用できるかどうかは、開発やデプロイのプロセスに大きな影響を与える可能性があります。

最近、異なるUbuntuコンテナでインストール可能なPHPのバージョンを深く掘り下げる必要がある状況に遭遇しました。

発見プロセス

当初、ubuntu:18.04ベースのDockerコンテナにPHPバージョン7.3以上をインストールしようとしました。ppa:ondrej/php を追加しても、7.2以上のバージョンのPHPをインストールすることができませんでした。

私のプロジェクトの多くは、様々な依存関係やそれ以降のPHPバージョンで導入された機能により、少なくともPHP 7.3が必要だったため、この制限は大きな課題となりました。

Ubuntu 18.04での実験

ubuntu:18.04コンテナを使い、以下のコマンドを活用してPHP 7.3と8.0のインストールを試みました

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.3

以下の様なエラーになりました

E: Unable to locate package php7.3
E: Couldn't find any package by glob 'php7.3'
E: Couldn't find any package by regex 'php7.3'

Ubuntu 20.04への乗り換え

ubuntu:18.04で直面した課題に促され、Dockerコンテナをubuntu:20.04に切り替えることにしました。

同じ手順を適用したところ、PHPバージョン7.3、7.4、そしてPHP 8.0まで問題なくインストールできました。

分析

このことにより、ベースイメージが利用可能なPHP の version に影響することが明確になりました。Ubuntu 18.04は古いLTSリリースであるため、時には複雑な設定を追加しなければ、7.2以上のPHPバージョンをネイティブにサポートしていません。

対照的に、最新のLTSバージョンであるUbuntu 20.04は、ソフトウェアの互換性と可用性の進歩を反映して、新しいPHPバージョンをすぐにサポートしています。

結論

Docker環境でPHPを扱う開発者やDevOpsエンジニアにとって、ベースコンテナイメージとソフトウェアパッケージの可用性の関係を理解することは非常に重要です。

PHPのバージョン7.3以降を使用する予定であれば、ubuntu:20.04コンテナを選択するのが、より簡単で効率的な選択かと思います。

推奨事項

  • プロジェクトのセットアップを開始する前に、選択したUbuntuコンテナのバージョンとのPHPバージョンの互換性を必ず確認してください。
  • 新しいPHPバージョンのサポートが必要な場合は、Dockerコンテナを新しいUbuntuバージョンにアップグレードすることを検討してください。
  • UbuntuのリリースでサポートされているPHPのバージョンについて常に情報を入手し、スムーズな開発とデプロイを行いましょう。