Files
Edu/services/msg/Dockerfile
SpecialX 765f7da4c0 feat(msg): v2 ARB-013 topic 命名统一 + 考试事件消费
ARB-013 P0 修复:PRODUCER_TOPIC_MAP 从 edu.notification.* 改为 edu.notify.notification.*

kafka.consumer 新增 3 考试实时事件消费(exam.extended/force_submitted/question_reordered)

嵌套 payload 解包支持 + topic-map 扩展

新增 6 测试数据文件(docker-notify + 5 kafka 事件 json)

101 单元测试通过 + Docker 真实环境验证
2026-07-14 23:00:33 +08:00

58 lines
1.9 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Build stage
FROM node:22-alpine AS builder
WORKDIR /app
RUN corepack enable && corepack prepare pnpm@11.13.0 --activate
# 复制 workspace 配置 + tsconfig 基线
COPY package.json pnpm-lock.yaml* pnpm-workspace.yaml tsconfig.base.json ./
# 复制 shared-protogRPC proto-loader 运行时加载)
COPY packages/shared-proto ./packages/shared-proto
# 复制 shared-tsworkspace 依赖)
COPY packages/shared-ts ./packages/shared-ts
# 复制 msg 源码
COPY services/msg ./services/msg
# HUSKY=0 跳过根 package.json 的 prepare:husky 脚本
ENV HUSKY=0
# 从根目录安装全部 workspace 依赖
RUN pnpm install --no-frozen-lockfile --ignore-scripts
# 构建 shared-ts若 msg 依赖 @edu/shared-ts dist 产物)
RUN cd packages/shared-ts && pnpm build
# 构建 msg
WORKDIR /app/services/msg
RUN pnpm build
# 剪枝 devDependencies用 install --prod 替代 prune避免触发 husky prepare
ENV CI=true HUSKY=0
RUN cd /app/services/msg && pnpm install --prod --ignore-scripts
# Runtime stage
FROM node:22-alpine
WORKDIR /app
# 复制 workspace 配置 + tsconfig 基线
COPY package.json pnpm-lock.yaml* pnpm-workspace.yaml tsconfig.base.json ./
# 复制 shared-proto + shared-ts运行时需要proto 文件 + shared-ts dist
COPY packages/shared-proto ./packages/shared-proto
COPY packages/shared-ts ./packages/shared-ts
# 复制 msg 源码
COPY services/msg ./services/msg
# 从 builder 复制已编译的 prod node_modules + msg dist + shared-ts dist
COPY --from=builder /app/services/msg/node_modules ./services/msg/node_modules
COPY --from=builder /app/packages/shared-ts/node_modules ./packages/shared-ts/node_modules
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/services/msg/dist ./services/msg/dist
COPY --from=builder /app/packages/shared-ts/dist ./packages/shared-ts/dist
WORKDIR /app/services/msg
EXPOSE 3007 50056
CMD ["node", "dist/main.js"]