跳到主內容

【DockerCompose】nodejs

# 使用官方 Node.js 映像作為基礎映像
FROM node:18-alpine AS builder

# 設置工作目錄
WORKDIR /app

# 複製 package.json 和 package-lock.json
COPY package.json package-lock.json ./

# 使用 npm ci 來安裝生產環境的依賴,這樣可以確保安裝的依賴版本與 package-lock.json 中一致
RUN npm config set registry http://10.40.137.10:8080/repository/npm_momo/
RUN npm ci

# 複製所有專案文件
COPY . .

# 構建 Next.js 專案
RUN npm run build:uat

# 使用多階段構建,減少最終映像大小
FROM node:18-alpine AS runner

# 設置工作目錄
WORKDIR /app

# 從 builder 階段複製 standalone 輸出
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public

# 設置環境變數
ENV NODE_ENV=production

# 暴露端口(Next.js 默認使用 3000 端口)
EXPOSE 3000

# 運行 Next.js 專案
CMD ["node", "server.js"]