使用單個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有助於我們高效地跟蹤更改和進度。
廣告
資料結構
網路
關係型資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP