説明
zypper installは、確認が必要な場合に入力を待つことがあります。Dockerの自動ビルドでは、入力待ちやビルド失敗につながる可能性があります。
コンテナーイメージは、人が操作しなくてもビルドできる必要があります。確認入力には非対話オプションを使ってください。ただし、パッケージやリポジトリのエラーを解消したり、インストールの成功を保証したりするものではありません。
想定される影響
- イメージビルドが途中で停止したり、失敗したりする場合があります。
- CI/CDパイプラインのデプロイが遅れる可能性があります。
- 環境によって結果が変わり、ビルドの再現性が低下するおそれがあります。
対処方法
zypper install -y ...のように非対話オプションを指定してください。- パッケージキャッシュの削除もビルド手順に含めてください。
- 自動ビルドにユーザー入力を要求するコマンドがないか確認してください。
例
zypperとリポジトリが構成されたSUSE系イメージで、rootとして実行するビルド手順の抜粋です。curlパッケージが提供されていることと、インストール結果を確認してください。
変更前
dockerfile
RUN zypper install curl && zypper clean
変更後
dockerfile
RUN zypper install -y curl && zypper clean
説明:
- 変更前: 確認入力が必要になると、ビルドが中断する場合があります。
- 変更後:
-yで非対話インストールを指定します。失敗時の終了コードや、ライセンスなどの追加要件も確認してください。