From 6bb47dad85c49c6bb37394af5a1f831dff566f63 Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 26 Jan 2026 03:41:16 -0800 Subject: [PATCH] fix(docker): copy shared module AFTER npm install to prevent wipe npm install was clearing the @iconsulting/shared folder that was copied before it. Moving the COPY command after npm install ensures the shared package remains in node_modules. Co-Authored-By: Claude Opus 4.5 --- packages/services/conversation-service/Dockerfile | 8 ++++---- packages/services/evolution-service/Dockerfile | 8 ++++---- packages/services/file-service/Dockerfile | 8 ++++---- packages/services/knowledge-service/Dockerfile | 8 ++++---- packages/services/payment-service/Dockerfile | 8 ++++---- packages/services/user-service/Dockerfile | 8 ++++---- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/packages/services/conversation-service/Dockerfile b/packages/services/conversation-service/Dockerfile index 942e5bd..6a79848 100644 --- a/packages/services/conversation-service/Dockerfile +++ b/packages/services/conversation-service/Dockerfile @@ -31,16 +31,16 @@ RUN addgroup --system --gid 1001 nodejs && \ COPY --from=builder /app/packages/services/conversation-service/dist ./dist COPY --from=builder /app/packages/services/conversation-service/package.json ./ -# 复制 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/ - # 移除 workspace: 协议依赖并安装生产依赖 RUN apk add --no-cache jq && \ jq 'del(.dependencies["@iconsulting/shared"])' package.json > package.tmp.json && \ mv package.tmp.json package.json && \ npm install --omit=dev --ignore-scripts +# 复制 shared 包的构建产物 (必须在 npm install 之后,否则会被清空) +COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist +COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/ + ENV NODE_ENV=production ENV PORT=3004 diff --git a/packages/services/evolution-service/Dockerfile b/packages/services/evolution-service/Dockerfile index c3f8e3f..c487068 100644 --- a/packages/services/evolution-service/Dockerfile +++ b/packages/services/evolution-service/Dockerfile @@ -31,10 +31,6 @@ RUN addgroup --system --gid 1001 nodejs && \ COPY --from=builder /app/packages/services/evolution-service/dist ./dist COPY --from=builder /app/packages/services/evolution-service/package.json ./ -# 复制 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/ - # 移除 workspace: 协议依赖并安装生产依赖 # bcrypt 需要原生编译,安装编译工具 RUN apk add --no-cache jq python3 make g++ && \ @@ -43,6 +39,10 @@ RUN apk add --no-cache jq python3 make g++ && \ npm install --omit=dev && \ apk del python3 make g++ +# 复制 shared 包的构建产物 (必须在 npm install 之后,否则会被清空) +COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist +COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/ + ENV NODE_ENV=production ENV PORT=3005 diff --git a/packages/services/file-service/Dockerfile b/packages/services/file-service/Dockerfile index 4e27277..1bb5d4b 100644 --- a/packages/services/file-service/Dockerfile +++ b/packages/services/file-service/Dockerfile @@ -45,10 +45,6 @@ RUN addgroup --system --gid 1001 nodejs && \ COPY --from=builder /app/packages/services/file-service/dist ./dist COPY --from=builder /app/packages/services/file-service/package.json ./ -# 复制 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/ - # 移除 workspace: 协议依赖并安装生产依赖 RUN apk add --no-cache jq python3 make g++ && \ jq 'del(.dependencies["@iconsulting/shared"])' package.json > package.tmp.json && \ @@ -56,6 +52,10 @@ RUN apk add --no-cache jq python3 make g++ && \ npm install --omit=dev && \ apk del python3 make g++ +# 复制 shared 包的构建产物 (必须在 npm install 之后,否则会被清空) +COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist +COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/ + # 设置环境变量 ENV NODE_ENV=production ENV PORT=3006 diff --git a/packages/services/knowledge-service/Dockerfile b/packages/services/knowledge-service/Dockerfile index 553b1e9..c101006 100644 --- a/packages/services/knowledge-service/Dockerfile +++ b/packages/services/knowledge-service/Dockerfile @@ -31,16 +31,16 @@ RUN addgroup --system --gid 1001 nodejs && \ COPY --from=builder /app/packages/services/knowledge-service/dist ./dist COPY --from=builder /app/packages/services/knowledge-service/package.json ./ -# 复制 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/ - # 移除 workspace: 协议依赖并安装生产依赖 RUN apk add --no-cache jq && \ jq 'del(.dependencies["@iconsulting/shared"])' package.json > package.tmp.json && \ mv package.tmp.json package.json && \ npm install --omit=dev --ignore-scripts +# 复制 shared 包的构建产物 (必须在 npm install 之后,否则会被清空) +COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist +COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/ + ENV NODE_ENV=production ENV PORT=3003 diff --git a/packages/services/payment-service/Dockerfile b/packages/services/payment-service/Dockerfile index 1d4752b..3649af2 100644 --- a/packages/services/payment-service/Dockerfile +++ b/packages/services/payment-service/Dockerfile @@ -31,16 +31,16 @@ RUN addgroup --system --gid 1001 nodejs && \ COPY --from=builder /app/packages/services/payment-service/dist ./dist COPY --from=builder /app/packages/services/payment-service/package.json ./ -# 复制 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/ - # 移除 workspace: 协议依赖并安装生产依赖 RUN apk add --no-cache jq && \ jq 'del(.dependencies["@iconsulting/shared"])' package.json > package.tmp.json && \ mv package.tmp.json package.json && \ npm install --omit=dev --ignore-scripts +# 复制 shared 包的构建产物 (必须在 npm install 之后,否则会被清空) +COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist +COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/ + ENV NODE_ENV=production ENV PORT=3002 diff --git a/packages/services/user-service/Dockerfile b/packages/services/user-service/Dockerfile index 609a303..9d81021 100644 --- a/packages/services/user-service/Dockerfile +++ b/packages/services/user-service/Dockerfile @@ -42,10 +42,6 @@ RUN addgroup --system --gid 1001 nodejs && \ COPY --from=builder /app/packages/services/user-service/dist ./dist COPY --from=builder /app/packages/services/user-service/package.json ./ -# 复制 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/ - # 移除 workspace: 协议依赖并安装生产依赖 # bcrypt 需要原生编译,安装编译工具 RUN apk add --no-cache jq python3 make g++ && \ @@ -54,6 +50,10 @@ RUN apk add --no-cache jq python3 make g++ && \ npm install --omit=dev && \ apk del python3 make g++ +# 复制 shared 包的构建产物 (必须在 npm install 之后,否则会被清空) +COPY --from=builder /app/packages/shared/dist ./node_modules/@iconsulting/shared/dist +COPY --from=builder /app/packages/shared/package.json ./node_modules/@iconsulting/shared/ + # 设置环境变量 ENV NODE_ENV=production ENV PORT=3001