fix: 修复pnpm monorepo Docker构建问题
- 移除runner阶段的pnpm安装(不再需要) - 使用npm install替代直接复制node_modules - 单独复制@iconsulting/shared构建产物 - 解决pnpm符号链接在Docker中失效的问题 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
ac105a8c0b
commit
287aeb5c72
|
|
@ -25,13 +25,18 @@ FROM node:20-alpine AS runner
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
||||||
RUN addgroup --system --gid 1001 nodejs && \
|
RUN addgroup --system --gid 1001 nodejs && \
|
||||||
adduser --system --uid 1001 nestjs
|
adduser --system --uid 1001 nestjs
|
||||||
|
|
||||||
COPY --from=builder /app/packages/services/conversation-service/dist ./dist
|
COPY --from=builder /app/packages/services/conversation-service/dist ./dist
|
||||||
COPY --from=builder /app/packages/services/conversation-service/package.json ./
|
COPY --from=builder /app/packages/services/conversation-service/package.json ./
|
||||||
COPY --from=builder /app/node_modules ./node_modules
|
|
||||||
|
# 复制 shared 包的构建产物
|
||||||
|
COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist
|
||||||
|
COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/
|
||||||
|
|
||||||
|
# 安装生产依赖
|
||||||
|
RUN npm install --omit=dev --ignore-scripts
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
ENV PORT=3004
|
ENV PORT=3004
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,18 @@ FROM node:20-alpine AS runner
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
||||||
RUN addgroup --system --gid 1001 nodejs && \
|
RUN addgroup --system --gid 1001 nodejs && \
|
||||||
adduser --system --uid 1001 nestjs
|
adduser --system --uid 1001 nestjs
|
||||||
|
|
||||||
COPY --from=builder /app/packages/services/evolution-service/dist ./dist
|
COPY --from=builder /app/packages/services/evolution-service/dist ./dist
|
||||||
COPY --from=builder /app/packages/services/evolution-service/package.json ./
|
COPY --from=builder /app/packages/services/evolution-service/package.json ./
|
||||||
COPY --from=builder /app/node_modules ./node_modules
|
|
||||||
|
# 复制 shared 包的构建产物
|
||||||
|
COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist
|
||||||
|
COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/
|
||||||
|
|
||||||
|
# 安装生产依赖
|
||||||
|
RUN npm install --omit=dev --ignore-scripts
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
ENV PORT=3005
|
ENV PORT=3005
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,18 @@ FROM node:20-alpine AS runner
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
||||||
RUN addgroup --system --gid 1001 nodejs && \
|
RUN addgroup --system --gid 1001 nodejs && \
|
||||||
adduser --system --uid 1001 nestjs
|
adduser --system --uid 1001 nestjs
|
||||||
|
|
||||||
COPY --from=builder /app/packages/services/knowledge-service/dist ./dist
|
COPY --from=builder /app/packages/services/knowledge-service/dist ./dist
|
||||||
COPY --from=builder /app/packages/services/knowledge-service/package.json ./
|
COPY --from=builder /app/packages/services/knowledge-service/package.json ./
|
||||||
COPY --from=builder /app/node_modules ./node_modules
|
|
||||||
|
# 复制 shared 包的构建产物
|
||||||
|
COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist
|
||||||
|
COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/
|
||||||
|
|
||||||
|
# 安装生产依赖
|
||||||
|
RUN npm install --omit=dev --ignore-scripts
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
ENV PORT=3003
|
ENV PORT=3003
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,18 @@ FROM node:20-alpine AS runner
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
||||||
RUN addgroup --system --gid 1001 nodejs && \
|
RUN addgroup --system --gid 1001 nodejs && \
|
||||||
adduser --system --uid 1001 nestjs
|
adduser --system --uid 1001 nestjs
|
||||||
|
|
||||||
COPY --from=builder /app/packages/services/payment-service/dist ./dist
|
COPY --from=builder /app/packages/services/payment-service/dist ./dist
|
||||||
COPY --from=builder /app/packages/services/payment-service/package.json ./
|
COPY --from=builder /app/packages/services/payment-service/package.json ./
|
||||||
COPY --from=builder /app/node_modules ./node_modules
|
|
||||||
|
# 复制 shared 包的构建产物
|
||||||
|
COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist
|
||||||
|
COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/
|
||||||
|
|
||||||
|
# 安装生产依赖
|
||||||
|
RUN npm install --omit=dev --ignore-scripts
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
ENV PORT=3002
|
ENV PORT=3002
|
||||||
|
|
|
||||||
|
|
@ -34,17 +34,20 @@ FROM node:20-alpine AS runner
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# 安装 pnpm
|
|
||||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
||||||
|
|
||||||
# 创建非 root 用户
|
# 创建非 root 用户
|
||||||
RUN addgroup --system --gid 1001 nodejs && \
|
RUN addgroup --system --gid 1001 nodejs && \
|
||||||
adduser --system --uid 1001 nestjs
|
adduser --system --uid 1001 nestjs
|
||||||
|
|
||||||
# 复制构建产物
|
# 复制构建产物和依赖配置
|
||||||
COPY --from=builder /app/packages/services/user-service/dist ./dist
|
COPY --from=builder /app/packages/services/user-service/dist ./dist
|
||||||
COPY --from=builder /app/packages/services/user-service/package.json ./
|
COPY --from=builder /app/packages/services/user-service/package.json ./
|
||||||
COPY --from=builder /app/node_modules ./node_modules
|
|
||||||
|
# 复制 shared 包的构建产物 (因为依赖 workspace:*)
|
||||||
|
COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist
|
||||||
|
COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/
|
||||||
|
|
||||||
|
# 安装生产依赖 (使用 npm 避免 pnpm 符号链接问题)
|
||||||
|
RUN npm install --omit=dev --ignore-scripts
|
||||||
|
|
||||||
# 设置环境变量
|
# 设置环境变量
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue