説明
dnf install でパッケージ名だけを指定すると、リポジトリの変更によって別のバージョンが選ばれる場合があります。同じ Dockerfile を再ビルドしても、異なるイメージになる可能性があります。
この違いは、予期しない依存関係の変更、互換性の問題、デプロイ失敗につながります。必要なパッケージのバージョンを指定してインストール対象を管理してください。
想定される影響
- リポジトリの更新でイメージの内容が変わる場合があります。
- パッケージ変更によってアプリケーションの動作や設定が変わる可能性があります。
- 再ビルドしたデプロイ用イメージがテスト済みイメージと異なる場合があります。
対処方法
dnf install httpd-<version>-<release>の形式で、リポジトリにある正確なバージョンとリリースを指定してください。- 複数パッケージをインストールする場合も、それぞれを固定してください。
- バージョンを更新する前にテストと脆弱性の確認を行ってください。
例
HTTPD_VERSION_RELEASE には、使用する Fedora リポジトリに存在する確認済みのバージョンとリリースを指定してください。latest ベースと全体の update は変更可能なため、1 パッケージの固定だけではイメージ全体の再現性は保証されません。
変更前
dockerfile
FROM fedora:latest
RUN dnf -y update && dnf -y install httpd && dnf clean all
RUN ["dnf", "install", "httpd"]
変更後
dockerfile
FROM fedora:latest
ARG HTTPD_VERSION_RELEASE
RUN test -n "$HTTPD_VERSION_RELEASE" && dnf -y update && dnf -y install "httpd-${HTTPD_VERSION_RELEASE}" && dnf clean all
説明:
- 変更前: パッケージのバージョンが固定されず、ビルド時期によって変わる可能性があります。
- 変更後: 確認済みのバージョンを明示し、対象パッケージを管理します。