Docker 多階段構建是一種在 Dockerfile 中使用多個 FROM
指令的方法,它允許你將構建過程分為多個階段,每個階段都有自己的文件系統和依賴。這樣可以實現更高效的鏡像構建,減小最終鏡像的大小。
要實現多階段構建,請按照以下步驟操作:
FROM
指令定義多個構建階段。每個階段都應該有一個唯一的名稱。例如,你可以將構建過程分為兩個階段:build
和 final
。# 第一階段:構建
FROM node:14 AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# 第二階段:最終鏡像
FROM nginx:latest
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
在這個例子中,我們使用了 Node.js 鏡像作為構建環境,將應用程序代碼復制到容器中,安裝依賴項,運行構建命令(例如 npm run build
),然后將構建好的文件復制到最終的 Nginx 鏡像中。
使用 COPY --from
指令將構建階段生成的文件復制到最終的鏡像中。--from
指令的參數包括源鏡像名稱、源文件系統路徑和目標文件系統路徑。
在每個階段中,你可以根據需要安裝依賴項、復制文件、運行命令等。
在完成所有階段的構建后,Docker 將生成一個新的鏡像,其中包含了所有階段的結果。
注意:在使用多階段構建時,請確保在每個階段中使用正確的鏡像作為基礎鏡像,以便在構建過程中安裝依賴項和運行命令。同時,請注意在每個階段中清理不必要的文件和緩存,以減小最終鏡像的大小。