43 lines
1.0 KiB
Docker
43 lines
1.0 KiB
Docker
# ────────────────────
|
||
# 第一步:构建阶段
|
||
# ────────────────────
|
||
FROM node:20 AS builder
|
||
|
||
WORKDIR /app
|
||
|
||
COPY package*.json yarn.lock ./
|
||
COPY .env .
|
||
RUN yarn install --frozen-lockfile
|
||
|
||
COPY . .
|
||
RUN yarn build
|
||
|
||
# ────────────────────
|
||
# 第二步:运行阶段
|
||
# ────────────────────
|
||
FROM node:20-slim AS runtime
|
||
|
||
WORKDIR /app
|
||
|
||
# 拷贝构建产物
|
||
COPY --from=builder /app/.output .output
|
||
COPY --from=builder /app/node_modules ./node_modules
|
||
|
||
# 只拷贝必要的运行文件(不执行 yarn install)
|
||
# 如果 Nuxt 构建产物已完整,可不再安装依赖
|
||
# COPY package*.json yarn.lock ./
|
||
# RUN yarn install --production --frozen-lockfile
|
||
|
||
# ✅ 安装 serve 用于启动 SSR 服务
|
||
RUN npm install -g serve
|
||
|
||
# 暴露端口
|
||
EXPOSE 8091
|
||
|
||
# tell Nitro to listen on 0.0.0.0:8091
|
||
ENV HOST=0.0.0.0
|
||
ENV PORT=8091
|
||
|
||
# 启动 Nuxt SSR 服务
|
||
CMD ["node", ".output/server/index.mjs"]
|