Docker build的多階段構建允許你在一個Dockerfile中使用多個FROM
指令,每個指令可以定義一個不同的基礎鏡像。這樣,你可以在一個階段安裝和配置所有必要的軟件,然后在另一個階段僅復制必要的文件到最終的鏡像中。這有助于減小最終鏡像的大小,提高構建速度和運行效率。
以下是一個簡單的多階段構建示例:
# 第一階段:基于Node.js構建開發環境
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# 第二階段:基于Python構建生產環境
FROM python:3.8-slim
WORKDIR /app
COPY --from=builder /app/dist /app/dist
COPY --from=builder /app/node_modules /app/node_modules
CMD ["python", "app.py"]
在這個示例中,我們使用了兩個不同的基礎鏡像:node:14
和python:3.8-slim
。在第一階段,我們安裝了Node.js依賴項并構建了應用程序。在第二階段,我們僅復制了構建好的文件(dist
目錄)和Node.js模塊到基于Python的鏡像中,并設置了運行命令。
要構建這個多階段構建的Docker鏡像,請在包含Dockerfile的目錄中運行以下命令:
docker build -t my-app .
這將創建一個名為my-app
的Docker鏡像,其中包含了優化后的生產環境。