1、确保Docker和Docker Compose已安装#验证安装docker --versiondocker compose version
#如果是普通用户部署,将当前用户加入docker组(避免每次用sudo)sudo usermod -aG docker $USER# 需要重新登录或执行以下命令生效newgrp docker
2、部署一体化Docker Compose方案
#我们创建一个专门的目录来管理所有配置:sudo mkdir -p /opt/ai-auditcd /opt/ai-audit
在 /opt/ai-audit 目录下创建 docker-compose.yml 文件
💡 重要提醒:
必须在 /opt/ai-audit/ 目录下创建这个文件
之后的所有操作(运行 ./start.sh 等)都要在这个目录下执行
这个目录需要有sudo权限创建,但之后可以通过 chown 改变所有权
# 使用vim编辑器创建文件sudo vim docker-compose.yml
将以下内容完整复制到编辑器中
services: # Ollama 服务 - AI模型引擎 ollama: image: ollama/ollama:latest container_name: ollama ports: - "11434:11434" volumes: # 持久化存储模型数据 - ./ollama_data:/root/.ollama restart: unless-stopped environment: - OLLAMA_MODELS_SOURCE=aliyun #添加这行国内镜像 networks: - ai-audit-network # DeepAudit 后端服务 backend: image: ghcr.io/lintsinghua/deepaudit-backend:latest container_name: backend depends_on: - postgres - redis - ollama ports: - "3001:8000" environment: # 数据库配置 - DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/deepaudit - REDIS_URL=redis://redis:6379/0 # 关键:连接本地Ollama(使用Docker服务名) - LLM_PROVIDER=ollama - OLLAMA_API_BASE_URL=http://ollama:11434 - DEFAULT_LLM_MODEL=deepseek-coder:6.7b - EMBEDDING_MODEL_PROVIDER=ollama - DEFAULT_EMBEDDING_MODEL=nomic-embed-text # 其他配置 - NODE_ENV=production - PORT=8000 -AGENT_ENABLED=true -SANDBOX_ENABLED=true -SANDBOX_IMAGE=decaudit/sandbox:latest volumes: - ./uploads:/app/uploads - ./reports:/app/reports - /var/run/docker.sock:/var/run/docker.sock networks: - ai-audit-network restart: unless-stopped # DeepAudit 前端服务 deepaudit-frontend: image: ghcr.io/lintsinghua/deepaudit-frontend:latest container_name: deepaudit-frontend depends_on: - backend ports: - "3000:80" # Web界面访问端口 environment: - API_BASE_URL=http://backend:8000 networks: - ai-audit-network restart: unless-stopped # PostgreSQL数据库 postgres: image: postgres:15-alpine container_name: postgres environment: - POSTGRES_DB=deepaudit - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres volumes: - ./postgres_data:/var/lib/postgresql/data networks: - ai-audit-network restart: unless-stopped # Redis缓存 redis: image: redis:7-alpine container_name: redis volumes: - ./redis_data:/data networks: - ai-audit-network restart: unless-stopped# 自定义网络,确保所有容器可以相互通信networks: ai-audit-network: driver: bridge


# 创建启动脚本文件sudo vim start.sh
#!/bin/bashecho "=== 启动DeepAudit代码审计平台 ==="# 创建数据目录mkdir -p {ollama_data,postgres_data,redis_data,uploads,reports}# 设置权限chmod -R 755 .echo "1. 拉取并启动所有Docker服务..."# 自动检测使用哪个Docker Compose命令if command -v docker-compose &> /dev/null; then echo "检测到 docker-compose(旧版),使用带连字符的命令" DOCKER_COMPOSE_CMD="docker-compose"elif docker compose version &> /dev/null; then echo "检测到 docker compose(新版),使用不带连字符的命令" DOCKER_COMPOSE_CMD="docker compose"else echo "错误:未找到Docker Compose命令" echo "请安装Docker Compose:" echo "sudo apt-get install docker-compose-plugin" exit 1fi# 停止并清理旧容器$DOCKER_COMPOSE_CMD down# 启动所有服务$DOCKER_COMPOSE_CMD up -decho "2. 等待服务启动..."sleep 15echo "3. 检查服务状态:"docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"echo ""echo "4. 开始拉取AI模型(deepseek-coder:6.7b)..."echo " 注意:模型大小约4GB,下载需要一些时间"echo " 下载进度可以在另一个终端查看:docker logs ollama -f"# 在后台拉取模型docker exec ollama ollama pull deepseek-coder:6.7b > /tmp/ollama_pull.log 2>&1 &echo " 模型下载任务已在后台启动..."echo ""echo "5. 服务访问信息:"echo " - DeepAudit Web界面: http://localhost:3000"echo " - Ollama API: http://localhost:11434"echo ""echo "6. 监控命令:"echo " - 查看模型下载进度: docker logs ollama -f"echo " - 查看已下载模型: docker exec ollama ollama list"echo " - 停止所有服务: cd /opt/ai-audit && docker-compose down"echo ""echo "首次启动可能需要较长时间(取决于网络速度)。"echo "模型下载期间,其他服务已正常运行,可以访问Web界面进行初始配置。"


#设置权限sudo chmod +x start.sh
# 创建停止脚本sudo vim stop.shsudo chmod +x stop.sh
#!/bin/bashecho "=== 停止DeepAudit代码审计平台 ==="docker compose down
创建日志查看脚本文件
# 创建日志查看脚本sudo vim logs.shsudo chmod +x logs.sh
#!/bin/bashecho "=== 查看服务日志 ==="echo "1. 查看所有服务日志: docker compose logs"echo "2. 查看Ollama日志: docker logs ollama -f"echo "3. 查看DeepAudit后端日志: docker logs backend -f"echo ""echo "请选择要查看的日志(输入数字):"select opt in "所有服务" "Ollama" "DeepAudit后端" "退出"; do case $opt in "所有服务") docker compose logs -f; break ;; "Ollama") docker logs ollama -f; break ;; "DeepAudit后端") docker logs backend -f; break ;; "退出") break ;; *) echo "无效选项";; esacdone
注意:首次运行会下载多个Docker镜像,包括:1. Ollama (~1GB)2. DeepAudit前后端 (~1GB)3. PostgreSQL (~200MB)4. Redis (~50MB)总共约 2.5GB 下载量,请确保网络连接良好。
# 可查看所有容器状态docker ps# 预期输出类似:# NAMES STATUS PORTS# ollama Up 5 minutes 0.0.0.0:11434->11434/tcp# backend Up 5 minutes 3001/tcp# deepaudit-frontend Up 5 minutes 0.0.0.0:3000->80/tcp# postgres Up 5 minutes 5432/tcp# redis Up 5 minutes 6379/tcp
#Ollama容器会自动下载 deepseek-coder:6.7b 模型(约4GB),查看进度:# 查看Ollama容器日志docker logs ollama --tail 20# 持续查看日志(按Ctrl+C退出)docker logs ollama -f
# 查看当前下载进度docker exec ollama ollama list# 或者通过API查看curl http://localhost:11434/api/tags
📁 完整的目录结构应该是:
/opt/ai-audit/├── docker-compose.yml # Docker编排文件(你正在创建)├── start.sh # 启动脚本├── stop.sh # 停止脚本├── logs.sh # 日志查看脚本├── ollama_data/ # Ollama模型数据(自动创建)├── postgres_data/ # 数据库数据(自动创建)├── redis_data/ # Redis缓存数据(自动创建)├── uploads/ # 上传文件(自动创建)└── reports/ # 审计报告(自动创建)
可以查看容器网段情况
# 直接查看所有容器IP for container in $(docker ps --format "{{.Names}}"); do echo "=== $container ===" echo "状态: $(docker inspect -f '{{.State.Status}}' $container)" echo "IP地址: $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $container)" echo "端口: $(docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}}{{$p}}->{{(index $conf 0).HostPort}} {{end}}' $container)" echo ""
5、模型配置
5.1、配置LLM
登录DeepAudit Web界面(http://localhost:3000),在系统设置中手动配置: