c9cf644ac5
- 添加 build-and-push.sh 脚本用于自动化构建和推送 Docker 镜像 - 更新 .dockerignore 排除 pnpm-workspace.yaml - 更新项目依赖和配置文件
45 lines
1014 B
Docker
Executable File
45 lines
1014 B
Docker
Executable File
# ==========================================
|
|
# 1. Build Stage
|
|
# ==========================================
|
|
FROM node:22-alpine AS builder
|
|
|
|
# 启用 corepack 并安装 pnpm
|
|
RUN corepack enable && corepack prepare pnpm@9 --activate
|
|
|
|
# 设置工作目录
|
|
WORKDIR /app
|
|
|
|
# 复制依赖相关文件
|
|
COPY package.json pnpm-lock.yaml ./
|
|
|
|
# 安装依赖项
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
# 复制项目源代码
|
|
COPY . .
|
|
|
|
# 执行打包构建(将生成 .output 目录)
|
|
RUN pnpm run build
|
|
|
|
# ==========================================
|
|
# 2. Production Stage
|
|
# ==========================================
|
|
FROM node:22-alpine AS runner
|
|
|
|
# 设置工作目录
|
|
WORKDIR /app
|
|
|
|
# 设置生产环境变量(Nuxt/Nitro 默认会读取这些变量)
|
|
ENV NODE_ENV=production
|
|
ENV HOST=0.0.0.0
|
|
ENV PORT=3000
|
|
|
|
# 仅复制构建产物(.output 目录包含了运行所需的所有内容)
|
|
COPY --from=builder /app/.output ./.output
|
|
|
|
# 暴露端口
|
|
EXPOSE 3000
|
|
|
|
# 启动 Node.js 服务器
|
|
CMD ["node", ".output/server/index.mjs"]
|