CodeReview/docker-compose.yml

135 lines
3.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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