fix: Docker 构建改用 npm 替代 pnpm + 补全 OAuth/Redis 环境变量

- 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>
This commit is contained in:
2026-04-03 17:24:52 +08:00
parent 8b6aeb28b1
commit 5e6efdaf59
12 changed files with 553 additions and 63 deletions

View File

@@ -1,14 +1,16 @@
FROM node:20-alpine AS build
RUN corepack enable && corepack prepare pnpm@latest --activate
WORKDIR /app
WORKDIR /app/packages/web
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
COPY packages/web/package.json packages/web/
RUN pnpm install --frozen-lockfile --filter @agent-fox/web...
COPY packages/web/package.json ./
RUN npm install
COPY packages/web/ packages/web/
COPY tsconfig.base.json ./
RUN pnpm --filter @agent-fox/web build
COPY packages/web/src/ ./src/
COPY packages/web/index.html ./
COPY packages/web/vite.config.ts ./
COPY packages/web/tsconfig.json ./
COPY tsconfig.base.json /app/
RUN npx vite build
FROM nginx:alpine
COPY --from=build /app/packages/web/dist /usr/share/nginx/html

View File

@@ -10,8 +10,7 @@ export default function McpIntegration({ project }: { project: Project }) {
const [copied, setCopied] = useState<string | null>(null);
const { onOpenSettings } = useLayoutContext();
const { t } = useI18n();
const mcpHost = window.location.hostname;
const mcpUrl = `http://${mcpHost}:3001/mcp/${project.id}`;
const mcpUrl = `${window.location.origin}/mcp/${project.id}`;
const { data: keyStatus } = useQuery({
queryKey: ['api-key-status'],