|
|
|
@ -1,35 +1,42 @@
|
|
|
|
# 阶段1: 构建阶段
|
|
|
|
# 阶段1: 构建阶段
|
|
|
|
FROM node:22.14.0-slim AS builder
|
|
|
|
FROM node:24.7.0-slim AS builder
|
|
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
|
|
# 全局安装 pnpm
|
|
|
|
RUN npm config set registry https://registry.npmmirror.com \
|
|
|
|
RUN npm install -g pnpm
|
|
|
|
&& npm install -g pnpm \
|
|
|
|
|
|
|
|
&& pnpm config set registry https://registry.npmmirror.com
|
|
|
|
|
|
|
|
|
|
|
|
# 复制依赖文件
|
|
|
|
# 复制依赖文件
|
|
|
|
COPY package.json pnpm-lock.yaml ./
|
|
|
|
COPY package.json pnpm-lock.yaml ./
|
|
|
|
RUN pnpm install --registry https://registry.npmmirror.com
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 复制源码并构建
|
|
|
|
# 【合并2】强制安装依赖
|
|
|
|
|
|
|
|
RUN pnpm install --force \
|
|
|
|
|
|
|
|
&& pnpm add -D @unocss/eslint-plugin
|
|
|
|
|
|
|
|
|
|
|
|
COPY . .
|
|
|
|
COPY . .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 执行生产构建(和你本地的build:prod命令一致)
|
|
|
|
RUN pnpm run build:prod
|
|
|
|
RUN pnpm run build:prod
|
|
|
|
|
|
|
|
|
|
|
|
# 阶段2: 生产运行阶段
|
|
|
|
# 阶段2: 生产运行阶段
|
|
|
|
FROM node:22.14.0-slim
|
|
|
|
FROM node:24.7.0-slim
|
|
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
|
|
# 全局安装 pnpm(确保运行时可用)
|
|
|
|
# 【合并3】设置npm镜像源 + 全局安装pnpm + 设置pnpm镜像源
|
|
|
|
RUN npm install -g pnpm --registry https://registry.npmmirror.com
|
|
|
|
RUN npm config set registry https://registry.npmmirror.com \
|
|
|
|
|
|
|
|
&& npm install -g pnpm \
|
|
|
|
|
|
|
|
&& pnpm config set registry https://registry.npmmirror.com
|
|
|
|
|
|
|
|
|
|
|
|
# 从构建阶段复制所有文件(包括 node_modules 和构建产物)
|
|
|
|
|
|
|
|
COPY --from=builder /app .
|
|
|
|
COPY --from=builder /app .
|
|
|
|
|
|
|
|
|
|
|
|
# 设置环境变量
|
|
|
|
# 设置环境变量
|
|
|
|
ENV PORT 8088
|
|
|
|
ENV PORT 8088
|
|
|
|
ENV NODE_ENV production
|
|
|
|
ENV NODE_ENV production
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 暴露端口
|
|
|
|
EXPOSE 8088
|
|
|
|
EXPOSE 8088
|
|
|
|
|
|
|
|
|
|
|
|
# 使用 pnpm 启动
|
|
|
|
# 启动应用
|
|
|
|
CMD ["pnpm", "start"]
|
|
|
|
CMD ["pnpm", "start"]
|