説明
zypper install でパッケージ名だけを指定すると、リポジトリの状態によって別のバージョンが選ばれる場合があります。同じ Dockerfile でもビルド時点で結果が変わり、障害の再現やロールバックが難しくなることがあります。
バージョン固定は変更を管理する手段であり、安全性を保証するものではありません。ベースイメージ、依存関係、リポジトリの状態もビルド結果に影響します。
想定される影響
- 予期しない依存関係の変更で、アプリケーションの動作が変わる場合があります。
- 古いバージョンを固定し続けると、必要なセキュリティ修正が反映されない場合があります。
対処方法
- 使用するリポジトリのパッケージ名とバージョンを確認し、package=version の形で検証済みバージョンを指定してください。
- セキュリティ修正とサポート期間を確認して固定値を更新してください。再現性が重要な場合は、依存関係とリポジトリのスナップショットも管理してください。
例
既存の httpd=2.4.58 は構文の比較例です。実際の openSUSE 環境で提供される Apache パッケージ名とバージョン・リリースを確認して置き換えてください。このベースタグやバージョンを、現在のデプロイの推奨値として使用しないでください。
変更前
dockerfile
FROM opensuse/leap:15.6
RUN zypper install -y httpd \
&& zypper clean
変更後
dockerfile
FROM opensuse/leap:15.6
RUN zypper install -y httpd=2.4.58 \
&& zypper clean
補足:
- 変更前: バージョン制約がなく、リポジトリが選ぶバージョンが変わる場合があります。
- 変更後: 特定のバージョンを要求します。該当パッケージとバージョンがリポジトリに存在する必要があり、セキュリティ更新も別途管理してください。