From 98b52fdb3114250d4f860b2bf983ce7a031a3b22 Mon Sep 17 00:00:00 2001 From: apescale Date: Mon, 31 Aug 2026 06:23:31 +0800 Subject: [PATCH] fix(deploy): proxy /deepflow-backend/* to backend /api/* in Docker + expose deepflow ports - next.config.js: server-side rewrites so the standalone frontend (built with NEXT_PUBLIC_API_URL=/deepflow-backend) can reach deepflow-backend:8000/api/* without CORS; target overridable via DEEPFLOW_BACKEND_HOST - docker-compose: expose deepflow-frontend 3001:3000 and deepflow-backend 8000:8000 --- deepflow/web/next.config.js | 14 ++++++++++++++ deployment/docker/deepdata/docker-compose.yml | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/deepflow/web/next.config.js b/deepflow/web/next.config.js index 552a4aa..a1fa2e6 100644 --- a/deepflow/web/next.config.js +++ b/deepflow/web/next.config.js @@ -40,6 +40,20 @@ const config = { // ... rest of the configuration. output: "standalone", + + // Docker standalone 部署:把 /deepflow-backend/* 代理到 deepflow-backend 服务。 + // 前端以 NEXT_PUBLIC_API_URL=/deepflow-backend 构建(见 + // src/core/api/resolve-service-url.ts,直接拼 origin + /deepflow-backend/), + // 而后端路由均带 /api 前缀(见 src/server/app.py)。由 Next 服务端补上 /api 前缀, + // 避免浏览器跨端口 / CORS 问题。目标地址可用 DEEPFLOW_BACKEND_HOST 覆盖。 + async rewrites() { + const backendHost = + process.env.DEEPFLOW_BACKEND_HOST || "http://deepflow-backend:8000"; + return [ + { source: "/deepflow-backend/:path*", destination: `${backendHost}/api/:path*` }, + { source: "/deepflow-backend", destination: `${backendHost}/api/` }, + ]; + }, }; export default withNextIntl(config); diff --git a/deployment/docker/deepdata/docker-compose.yml b/deployment/docker/deepdata/docker-compose.yml index c7879bd..e6f9c7d 100644 --- a/deployment/docker/deepdata/docker-compose.yml +++ b/deployment/docker/deepdata/docker-compose.yml @@ -205,6 +205,8 @@ services: container_name: deepflow-backend env_file: - .env + ports: + - "8000:8000" volumes: - ./conf.yaml:/app/conf.yaml:ro - deepflow-log-volume:/var/log/deepflow @@ -219,6 +221,8 @@ services: container_name: deepflow-frontend env_file: - .env + ports: + - "3001:3000" depends_on: - deepflow-backend restart: on-failure