溫馨提示×

Docker build怎樣實現(xiàn)多階段

小樊
82
2024-10-29 03:44:30
欄目: 智能運維

Docker build的多階段構(gòu)建允許你在一個Dockerfile中使用多個FROM指令,每個指令可以定義一個不同的基礎(chǔ)鏡像。這樣,你可以在一個階段安裝和配置所有必要的軟件,然后在另一個階段僅復(fù)制必要的文件到最終的鏡像中。這有助于減小最終鏡像的大小,提高構(gòu)建速度和運行效率。

以下是一個簡單的多階段構(gòu)建示例:

# 第一階段:基于Node.js構(gòu)建開發(fā)環(huán)境
FROM node:14 AS builder

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

RUN npm run build

# 第二階段:基于Python構(gòu)建生產(chǎn)環(huán)境
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"]

在這個示例中,我們使用了兩個不同的基礎(chǔ)鏡像:node:14python:3.8-slim。在第一階段,我們安裝了Node.js依賴項并構(gòu)建了應(yīng)用程序。在第二階段,我們僅復(fù)制了構(gòu)建好的文件(dist目錄)和Node.js模塊到基于Python的鏡像中,并設(shè)置了運行命令。

要構(gòu)建這個多階段構(gòu)建的Docker鏡像,請在包含Dockerfile的目錄中運行以下命令:

docker build -t my-app .

這將創(chuàng)建一個名為my-app的Docker鏡像,其中包含了優(yōu)化后的生產(chǎn)環(huán)境。

0