-
Notifications
You must be signed in to change notification settings - Fork 5
Dockerfile: Multi stage build
Kenichi Omichi edited this page Mar 23, 2023
·
1 revision
python:3.7-slim などのコンテナーイメージを使っていると AWS ECR や trivy で大量の CVE 警告が表示される。 商用環境で動作するコンテナーイメージは必要最小限の機能を保持する小さなものに置き換えることで、セキュリティ課題に直面するリスクを小さくする。 gcr.io/distroless/python3-debian10 などのコンテナーイメージがそれで、python:3.7-slim から置き換えていく。 しかし、上記distroless はパッケージマネージメント(apt, pip)すら入っていないため、イメージビルドの際に手間取ることになる。 そこで multi-stage build を使ってコンテナーイメージを作っていくことになる。
Multi-stage build は複数のコンテナーイメージを使いながらイメージを作成していく。 例えば、pip コマンドを使って必要な python ライブラリをダウンロード・インストールする際には python:3.7-slim を使って実施し、 そこでインストールした python ライブラリを、gcr.io/distroless/python3-debian10 ベースのコンテナーイメージにコピーして 商用コンテナーイメージを作っていく。