説明
yum install httpd のようにバージョンを指定しないと、リポジトリの変更によって別のバージョンが選ばれる場合があります。同じ Dockerfile の再ビルドでも、異なるイメージになる可能性があります。
一貫したデプロイ用イメージは原因調査やロールバックに役立ちます。パッケージのバージョンを指定して、予期しない変更を減らしてください。
想定される影響
- ビルドごとに異なるパッケージバージョンがインストールされる場合があります。
- 予期しないパッケージ変更でアプリケーションの動作が変わる可能性があります。
- テストと本番のイメージ構成が異なる場合があります。
対処方法
yum install -y httpd-<version>-<release>の形式で、リポジトリにある正確なバージョンとリリースを指定してください。- 変数で管理する場合も、実際に選択されるバージョンを固定してください。
- バージョンを更新する前にテストとセキュリティ確認を行ってください。
例
yum が利用できるサポート対象イメージでのインストール命令の抜粋です。HTTPD_VERSION_RELEASE には、そのイメージのリポジトリから取得できる確認済みのバージョンとリリースを指定してください。ほかのパッケージやベースイメージの固定とセキュリティ更新も別途管理してください。
変更前
dockerfile
RUN yum install -y httpd && yum clean all
RUN ["yum", "install", "httpd"]
変更後
dockerfile
ARG HTTPD_VERSION_RELEASE
RUN test -n "$HTTPD_VERSION_RELEASE" && yum install -y "httpd-${HTTPD_VERSION_RELEASE}" && yum clean all
説明:
- 変更前: バージョンが指定されず、リポジトリの変更がビルドに反映される可能性があります。
- 変更後: 必要なバージョンを明示して、インストールするパッケージを管理します。