2025-12-14 21:25:11 +08:00
|
|
|
# =============================================
|
2026-01-05 13:50:23 +08:00
|
|
|
# DeepAudit Docker Compose 配置
|
2025-12-14 21:25:11 +08:00
|
|
|
# =============================================
|
2025-12-15 15:18:55 +08:00
|
|
|
# 部署: docker compose up -d
|
2025-12-15 10:24:58 +08:00
|
|
|
# 查看日志: docker compose logs -f
|
2025-12-15 15:18:55 +08:00
|
|
|
# 注意: Agent 服务和沙箱环境是必须的核心组件
|
2025-12-14 21:25:11 +08:00
|
|
|
|
2025-10-23 00:13:48 +08:00
|
|
|
services:
|
2025-12-14 21:25:11 +08:00
|
|
|
# =============================================
|
2025-12-15 15:18:55 +08:00
|
|
|
# 核心基础服务
|
2025-12-14 21:25:11 +08:00
|
|
|
# =============================================
|
2025-12-15 10:24:58 +08:00
|
|
|
|
2025-11-26 21:11:12 +08:00
|
|
|
db:
|
|
|
|
|
image: postgres:15-alpine
|
2025-12-15 10:24:58 +08:00
|
|
|
restart: unless-stopped
|
2025-11-26 21:11:12 +08:00
|
|
|
volumes:
|
|
|
|
|
- postgres_data:/var/lib/postgresql/data
|
|
|
|
|
environment:
|
|
|
|
|
- POSTGRES_USER=postgres
|
|
|
|
|
- POSTGRES_PASSWORD=postgres
|
2025-12-08 21:35:09 +08:00
|
|
|
- POSTGRES_DB=deepaudit
|
2025-10-23 00:13:48 +08:00
|
|
|
ports:
|
2025-11-26 21:11:12 +08:00
|
|
|
- "5432:5432"
|
2025-10-23 00:13:48 +08:00
|
|
|
healthcheck:
|
2025-12-16 14:53:48 +08:00
|
|
|
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
|
2025-11-26 21:11:12 +08:00
|
|
|
interval: 5s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 5
|
2025-11-28 20:43:26 +08:00
|
|
|
networks:
|
2025-12-08 21:35:09 +08:00
|
|
|
- deepaudit-network
|
2025-11-26 21:11:12 +08:00
|
|
|
|
|
|
|
|
backend:
|
2025-12-05 20:51:22 +08:00
|
|
|
build:
|
2025-11-26 21:11:12 +08:00
|
|
|
context: ./backend
|
2025-12-15 10:24:58 +08:00
|
|
|
restart: unless-stopped
|
2026-01-06 13:34:38 +08:00
|
|
|
# 允许容器通过 host.docker.internal 访问宿主机
|
|
|
|
|
extra_hosts:
|
|
|
|
|
- "host.docker.internal:host-gateway"
|
2025-11-26 21:11:12 +08:00
|
|
|
volumes:
|
2026-01-06 16:45:12 +08:00
|
|
|
- ./backend/app:/app/app:ro # 挂载代码目录,修改后自动生效
|
2025-12-05 20:51:22 +08:00
|
|
|
- backend_uploads:/app/uploads
|
2026-01-06 13:48:14 +08:00
|
|
|
- chroma_data:/app/data/vector_db
|
2026-01-06 17:05:05 +08:00
|
|
|
- ci_workspace:/app/data/ci_workspace
|
|
|
|
|
- ci_vectordb:/app/data/ci_vectordb
|
2025-12-16 14:53:48 +08:00
|
|
|
- /var/run/docker.sock:/var/run/docker.sock # 沙箱执行必须
|
2025-11-26 21:11:12 +08:00
|
|
|
ports:
|
|
|
|
|
- "8000:8000"
|
2025-11-28 20:34:15 +08:00
|
|
|
env_file:
|
|
|
|
|
- ./backend/.env
|
2025-11-26 21:11:12 +08:00
|
|
|
environment:
|
2025-12-08 21:35:09 +08:00
|
|
|
- DATABASE_URL=postgresql+asyncpg://postgres:postgres@db:5432/deepaudit
|
2025-12-15 15:18:55 +08:00
|
|
|
- REDIS_URL=redis://redis:6379/0
|
|
|
|
|
- AGENT_ENABLED=true
|
|
|
|
|
- SANDBOX_ENABLED=true
|
2026-01-06 13:48:14 +08:00
|
|
|
- SANDBOX_IMAGE=deepaudit/sandbox:latest # 使用本地构建的沙箱镜像
|
2026-01-06 13:34:38 +08:00
|
|
|
# 指定 embedding 服务地址
|
2026-01-06 14:50:30 +08:00
|
|
|
- EMBEDDING_PROVIDER=openai
|
|
|
|
|
- EMBEDDING_MODEL=text-embedding-v4
|
|
|
|
|
- EMBEDDING_DIMENSION=1024
|
|
|
|
|
- EMBEDDING_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
2026-01-06 13:34:38 +08:00
|
|
|
# Gitea 配置
|
|
|
|
|
- GITEA_HOST_URL=http://sl.vrgon.com:3000
|
|
|
|
|
- GITEA_BOT_TOKEN=379a049b8d78965fdff474fc8676bca7e9c70248
|
2025-11-26 21:11:12 +08:00
|
|
|
depends_on:
|
|
|
|
|
db:
|
|
|
|
|
condition: service_healthy
|
2025-12-15 15:18:55 +08:00
|
|
|
redis:
|
|
|
|
|
condition: service_healthy
|
2026-01-06 17:12:07 +08:00
|
|
|
# 开发模式下,可以启用 --reload 热重载
|
|
|
|
|
command: sh -c ".venv/bin/alembic upgrade head && .venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000'"
|
2025-11-28 20:43:26 +08:00
|
|
|
networks:
|
2025-12-08 21:35:09 +08:00
|
|
|
- deepaudit-network
|
2025-11-26 21:11:12 +08:00
|
|
|
|
|
|
|
|
frontend:
|
|
|
|
|
build:
|
|
|
|
|
context: ./frontend
|
2025-12-15 10:24:58 +08:00
|
|
|
restart: unless-stopped
|
2025-12-17 11:02:42 +08:00
|
|
|
volumes:
|
2025-12-18 18:13:09 +08:00
|
|
|
# - ./frontend/dist:/usr/share/nginx/html:ro # 挂载构建产物,本地 pnpm build 后自动生效
|
2026-01-06 13:48:14 +08:00
|
|
|
- ./frontend/nginx.conf:/etc/nginx/conf.d/default.conf:ro # 挂载 nginx 配置
|
2025-11-26 21:11:12 +08:00
|
|
|
ports:
|
2026-01-05 15:34:22 +08:00
|
|
|
- "83:80" # Nginx 监听 80 端口
|
2025-12-16 14:53:48 +08:00
|
|
|
environment:
|
|
|
|
|
- VITE_API_BASE_URL=/api/v1
|
2025-11-26 21:11:12 +08:00
|
|
|
depends_on:
|
|
|
|
|
- backend
|
2025-11-28 20:43:26 +08:00
|
|
|
networks:
|
2025-12-08 21:35:09 +08:00
|
|
|
- deepaudit-network
|
2025-11-28 20:43:26 +08:00
|
|
|
|
2025-12-14 21:25:11 +08:00
|
|
|
# =============================================
|
2025-12-15 15:18:55 +08:00
|
|
|
# Agent 服务必须组件
|
2025-12-14 21:25:11 +08:00
|
|
|
# =============================================
|
2025-12-15 10:24:58 +08:00
|
|
|
|
2025-12-15 15:18:55 +08:00
|
|
|
# Redis (Agent 任务队列 - 必须)
|
2025-12-14 21:25:11 +08:00
|
|
|
redis:
|
|
|
|
|
image: redis:7-alpine
|
2025-12-15 10:24:58 +08:00
|
|
|
restart: unless-stopped
|
2025-12-14 21:25:11 +08:00
|
|
|
ports:
|
|
|
|
|
- "6379:6379"
|
|
|
|
|
volumes:
|
|
|
|
|
- redis_data:/data
|
|
|
|
|
healthcheck:
|
2025-12-16 14:53:48 +08:00
|
|
|
test: [ "CMD", "redis-cli", "ping" ]
|
2025-12-14 21:25:11 +08:00
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 5
|
|
|
|
|
networks:
|
|
|
|
|
- deepaudit-network
|
|
|
|
|
|
2025-12-15 15:18:55 +08:00
|
|
|
# 沙箱镜像构建服务 (漏洞验证必须)
|
2025-12-17 11:02:42 +08:00
|
|
|
# 注意: 此服务仅用于构建镜像,构建完成后自动退出
|
2025-12-15 15:18:55 +08:00
|
|
|
sandbox:
|
|
|
|
|
build:
|
|
|
|
|
context: ./docker/sandbox
|
|
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
image: deepaudit/sandbox:latest
|
2025-12-17 11:02:42 +08:00
|
|
|
restart: "no"
|
2025-12-15 15:18:55 +08:00
|
|
|
command: echo "Sandbox image built successfully"
|
|
|
|
|
|
2025-11-28 20:43:26 +08:00
|
|
|
networks:
|
2025-12-08 21:35:09 +08:00
|
|
|
deepaudit-network:
|
2025-11-28 20:43:26 +08:00
|
|
|
driver: bridge
|
2026-01-05 15:34:22 +08:00
|
|
|
driver_opts:
|
2026-01-06 13:48:14 +08:00
|
|
|
com.docker.network.bridge.name: br-deepaudit # 指定宿主机网卡名称
|
2025-10-23 00:13:48 +08:00
|
|
|
|
2025-11-26 21:11:12 +08:00
|
|
|
volumes:
|
|
|
|
|
postgres_data:
|
2025-12-05 20:51:22 +08:00
|
|
|
backend_uploads:
|
2026-01-06 13:48:14 +08:00
|
|
|
chroma_data:
|
2026-01-06 17:05:05 +08:00
|
|
|
ci_workspace:
|
|
|
|
|
ci_vectordb:
|
2025-12-14 21:25:11 +08:00
|
|
|
redis_data:
|