應用程式通常有兩種版本
所以製作production image通常有兩個以上的phase
第一階段產生dist之類的資料夾
第二階段用第一階段的檔案跑在production server上
在專案目錄下新增Dockerfile
# 第一階段產生dist資料夾
FROM node:alpine as distFiles
# 指定預設/工作資料夾
WORKDIR /usr/nestapp
# 只copy package.json檔案
COPY ./package.json ./
# 安裝dependencies
RUN npm install
# copy其餘目錄及檔案
COPY ./ ./
COPY src src
# build
RUN npm run prestart:prod
# 第二階段只需要dist資料夾,不須額外安裝web framework的dependency
FROM node:alpine
# 從第一階段的檔案copy
COPY --from=distFiles /usr/nestapp/dist /dist
# 啟動server
CMD ["node", "dist/main.js"]