Docker是一種強(qiáng)大的容器化技術(shù),它可以讓開發(fā)者更加高效地部署和管理應(yīng)用程序。Docker支持兩段構(gòu)建,是一種使用Dockerfile來描述構(gòu)建過程的方式,可以將構(gòu)建過程分為兩個(gè)或多個(gè)階段。
FROM node:14 AS builder
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
FROM node:14-alpine
WORKDIR /app
COPY --from=builder /app/dist .
CMD ["npm", "start"]
在上面的例子中,我們使用了兩個(gè)FROM指令,定義了兩個(gè)不同的構(gòu)建階段。在第一個(gè)構(gòu)建階段中,我們使用node:14作為基礎(chǔ)鏡像,創(chuàng)建一個(gè)名為builder的階段,并將工作目錄設(shè)置為/app。接下來,我們將當(dāng)前目錄下的所有文件復(fù)制到容器中的/app目錄中,并使用npm安裝依賴項(xiàng),然后運(yùn)行npm腳本來構(gòu)建應(yīng)用程序。在這一階段的最后,我們擁有完整的構(gòu)建環(huán)境,包含了編譯并打包完成的應(yīng)用程序。
接著,我們使用第二個(gè)FROM指令,創(chuàng)建一個(gè)名為runtime的階段,將基礎(chǔ)鏡像設(shè)置為node:14-alpine。在這個(gè)階段,我們將工作目錄設(shè)置為/app,并使用COPY --from指令將第一個(gè)階段中構(gòu)建完成的應(yīng)用程序復(fù)制到這個(gè)階段中。最后,我們使用CMD指令來定義容器啟動(dòng)時(shí)要執(zhí)行的命令,這里我們使用npm start來啟動(dòng)應(yīng)用程序。