使用單個Dockerfile組合多個映象


在Docker上進行大型專案開發時,需要經歷開發週期的各個階段。為每個階段(例如構建、釋出、測試等)維護不同的Dockerfile會消耗大量資源,並且在生產力方面效率低下。

在較新的Docker版本中,可以使用多階段Dockerfile,藉助兩個特定的命令——FROM和AS。

我們可以在Dockerfile中組合使用多個FROM命令和AS命令,其中最後一個FROM命令將實際構建映象。之前的所有FROM命令都將建立中間映象,這些中間映象會定期快取。

當AS命令與FROM命令一起使用時,可以為中間映象提供虛擬名稱。

讓我們考慮下面的例子以便更好地理解。

#We create a base image.
FROM ubuntu AS base

#Install packages
RUN apt-get -y update
RUN apt-get -y vim

#Create intermediate image layer Dependencies
FROM base AS dependencies

#Install dependencies using a requirements file
RUN pip3 install -r requirements.txt

#Create intermediate image layer for Testing
FROM dependencies AS test

#Set your work directory
WORKDIR /usr/src/app

COPY . .

#Build the final image by running the test file
CMD [“python3”, “./test.py”]

正如我們在上面的Dockerfile中看到的,我們建立了兩個名為base和dependencies的中間映象。base中間映象是一個ubuntu映象,我們在其中更新並安裝vim編輯器。使用該base映象,我們建立一個名為dependencies的中間映象,安裝專案所需的某些依賴項,這些依賴項可以在名為requirements.txt的單獨檔案中定義。最終映象由test映象層建立,我們在其中定義工作目錄、複製檔案並執行test.py檔案。

映象構建的順序是base、dependencies,最後是test。我們還必須注意,如果任何中間映象構建失敗,則無法建立最終映象。

因此,在進行具有各種開發階段的大型專案開發時,建立多階段Dockerfile有助於我們高效地跟蹤更改和進度。

更新於:2020年10月1日

4K+瀏覽量

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.