vkleo
2025 年 6 月 12 日
巧了,我也是容器部署
```
# 第一阶段:构建阶段
FROM xxx/node:22.14.0-alpine3.21 AS builder
# 设置工作目录
WORKDIR /app
# 复制 package.json 和锁文件
COPY package*.json pnpm-lock.yaml ./
# 安装 pnpm
RUN npm install -g pnpm
# 安装依赖
RUN pnpm install
# 复制项目文件
COPY . .
# 构建项目
RUN pnpm run build
# 第二阶段:运行阶段
FROM xxx/node:22.14.0-alpine3.21
# 安装 pnpm (仅用于启动)
RUN npm install -g pnpm
# 设置工作目录
WORKDIR /app
# 复制 package.json (仅用于启动)
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/pnpm-lock.yaml ./
# 安装生产依赖
RUN pnpm install
# 从构建阶段复制构建产物
COPY --from=builder /app/.output ./.output
# 暴露端口
EXPOSE 3000
# 启动命令
CMD ["sh", "-c", "pnpm start & tail -f /dev/null"]
```