Docker Multistage Build 多映像建置


前言-不同階段出現不同的 Build 需求

我們開發過程中,可能會安裝一些 Dev Tool 可是這些 Dev Tool 在 Deployment Stage 是不必要的,那如果要拆分 Dev/Deploy 以往我們會分別開出不同的 Dockerfile

因此後來出現了比較適合開不同的 Dockerfile 的工具,Dapper 但是後來 Docker 在 17.05 推出 Multistage build,讓切分環境打包更方便了


ALIAS in multistage

在 Dockerfile 中我們可以用 FROM 來 Import base image 也可以用 AS 來給 base image alias,在 Multistage 中我們可以 import multiple image 並且透過 AS 來指定使用哪個 base image

1
2
FROM python-3.10.5.apline as alpine
FROM python-3.10.5.beta as beta

COPY from multistage

剛剛已經 import multiple image 接者我們可以調用兩邊的環境來協助我們打包

1
2
3
FROM python-3.10.5.apline as alpine
FROM python-3.10.5.beta as beta
COPY --from=alpine /etc /etc

參考資料

  • 30 天與鯨魚先生做好朋友系列 第 17 篇-Multi-stage Build
  • Dockerfile - Multi-stage build 筆記