- Dockerfile 全部改为 npm install + 全局 tsc,解决 pnpm 符号链接问题 - docker-compose 添加 Redis 服务、OAuth 环境变量透传、web 端口改为可配置 - MCP URL 改用 window.location.origin 适配反向代理 - tsconfig 添加 paths 映射解决 Docker 内模块引用 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
37 lines
1.3 KiB
Docker
37 lines
1.3 KiB
Docker
FROM node:20-alpine AS build
|
||
RUN npm install -g typescript@5
|
||
WORKDIR /app
|
||
|
||
COPY tsconfig.base.json ./
|
||
COPY prisma/ prisma/
|
||
|
||
# shared: 安装依赖 + prisma generate
|
||
COPY packages/shared/package.json packages/shared/tsconfig.json packages/shared/
|
||
RUN cd packages/shared && npm install && npx prisma generate --schema=../../prisma/schema.prisma
|
||
|
||
# mcp: 安装依赖(workspace:* → file: 引用)
|
||
COPY packages/mcp/package.json packages/mcp/tsconfig.json packages/mcp/
|
||
RUN cd packages/mcp && sed -i 's|"workspace:\*"|"file:../shared"|g' package.json && npm install
|
||
|
||
# 拷贝源码 + 编译
|
||
COPY packages/shared/src/ packages/shared/src/
|
||
COPY packages/mcp/src/ packages/mcp/src/
|
||
|
||
RUN tsc -p packages/shared/tsconfig.json
|
||
RUN tsc -p packages/mcp/tsconfig.json
|
||
|
||
# --- 精简运行时镜像 ---
|
||
FROM node:20-alpine AS runtime
|
||
WORKDIR /app
|
||
|
||
COPY --from=build /app/packages/shared/dist ./packages/shared/dist
|
||
COPY --from=build /app/packages/shared/package.json ./packages/shared/
|
||
COPY --from=build /app/packages/shared/node_modules ./packages/shared/node_modules
|
||
COPY --from=build /app/packages/mcp/dist ./packages/mcp/dist
|
||
COPY --from=build /app/packages/mcp/package.json ./packages/mcp/
|
||
COPY --from=build /app/packages/mcp/node_modules ./packages/mcp/node_modules
|
||
|
||
WORKDIR /app/packages/mcp
|
||
EXPOSE 3001
|
||
CMD ["node", "dist/index.js"]
|