- 新增 docker-compose 与 Tiltfile,容器化 backend/frontend/postgres(宿主口+10000) - 新增 services/config-service(GET /api/v1/system, /analysis-modules),并加入 compose - backend ConfigManager 移除本地文件回退,强制依赖 config-service - 新增 backend/frontend Dockerfile - 清理根目录:移动 pm2.config.js -> deployment/;dev.py -> scripts/;删除根 package.json 与 lock - 新增 .gitignore,忽略二进制与临时文件
90 lines
2.4 KiB
YAML
90 lines
2.4 KiB
YAML
version: "3.9"
|
||
|
||
services:
|
||
postgres-db:
|
||
image: postgres:16-alpine
|
||
container_name: fundamental-postgres
|
||
environment:
|
||
POSTGRES_USER: postgres
|
||
POSTGRES_PASSWORD: postgres
|
||
POSTGRES_DB: fundamental
|
||
volumes:
|
||
- pgdata:/var/lib/postgresql/data
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "pg_isready -U postgres -d fundamental"]
|
||
interval: 5s
|
||
timeout: 5s
|
||
retries: 10
|
||
ports:
|
||
- "15432:5432"
|
||
|
||
backend:
|
||
build:
|
||
context: .
|
||
dockerfile: backend/Dockerfile
|
||
container_name: fundamental-backend
|
||
working_dir: /workspace/backend
|
||
command: uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
||
environment:
|
||
PYTHONDONTWRITEBYTECODE: "1"
|
||
PYTHONUNBUFFERED: "1"
|
||
# SQLAlchemy async driver
|
||
DATABASE_URL: postgresql+asyncpg://postgres:postgres@postgres-db:5432/fundamental
|
||
# Config service base URL
|
||
CONFIG_SERVICE_BASE_URL: http://config-service:7000/api/v1
|
||
volumes:
|
||
# 挂载整个项目,确保后端代码中对项目根目录的相对路径(如 config/)仍然有效
|
||
- ./:/workspace
|
||
ports:
|
||
- "18000:8000"
|
||
depends_on:
|
||
postgres-db:
|
||
condition: service_healthy
|
||
config-service:
|
||
condition: service_started
|
||
|
||
frontend:
|
||
build:
|
||
context: .
|
||
dockerfile: frontend/Dockerfile
|
||
container_name: fundamental-frontend
|
||
working_dir: /workspace/frontend
|
||
command: npm run dev
|
||
environment:
|
||
# 让 Next 的 API 路由代理到后端容器
|
||
NEXT_PUBLIC_BACKEND_URL: http://backend:8000/api
|
||
# Prisma 直连数据库(与后端共用同一库)
|
||
DATABASE_URL: postgresql://postgres:postgres@postgres-db:5432/fundamental?schema=public
|
||
NODE_ENV: development
|
||
NEXT_TELEMETRY_DISABLED: "1"
|
||
volumes:
|
||
- ./:/workspace
|
||
# 隔离 node_modules,避免与宿主机冲突
|
||
- frontend_node_modules:/workspace/frontend/node_modules
|
||
ports:
|
||
- "13001:3001"
|
||
depends_on:
|
||
- backend
|
||
- postgres-db
|
||
- config-service
|
||
|
||
config-service:
|
||
build:
|
||
context: .
|
||
dockerfile: services/config-service/Dockerfile
|
||
container_name: fundamental-config-service
|
||
working_dir: /workspace/services/config-service
|
||
command: uvicorn app.main:app --host 0.0.0.0 --port 7000
|
||
environment:
|
||
PROJECT_ROOT: /workspace
|
||
volumes:
|
||
- ./:/workspace
|
||
ports:
|
||
- "17000:7000"
|
||
|
||
volumes:
|
||
pgdata:
|
||
frontend_node_modules:
|
||
|
||
|