- 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>
40 lines
1.5 KiB
Docker
40 lines
1.5 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
|
||
|
||
# server: 安装依赖(workspace:* → file: 引用)
|
||
COPY packages/server/package.json packages/server/tsconfig.json packages/server/
|
||
RUN cd packages/server && sed -i 's|"workspace:\*"|"file:../shared"|g' package.json && npm install
|
||
|
||
# 拷贝源码 + 编译
|
||
COPY packages/shared/src/ packages/shared/src/
|
||
COPY packages/server/src/ packages/server/src/
|
||
|
||
RUN tsc -p packages/shared/tsconfig.json
|
||
RUN tsc -p packages/server/tsconfig.json
|
||
|
||
# --- 精简运行时镜像 ---
|
||
FROM node:20-alpine AS runtime
|
||
RUN npm install -g prisma@6
|
||
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/server/dist ./packages/server/dist
|
||
COPY --from=build /app/packages/server/package.json ./packages/server/
|
||
COPY --from=build /app/packages/server/node_modules ./packages/server/node_modules
|
||
COPY --from=build /app/prisma ./prisma
|
||
COPY scripts/migrate-and-start.sh ./scripts/
|
||
RUN chmod +x scripts/migrate-and-start.sh
|
||
|
||
EXPOSE 3000
|
||
CMD ["sh", "scripts/migrate-and-start.sh"]
|