AgenticSeek Docker Compose配置:多服务协同工作的网络设置
多服务协同架构概述
AgenticSeek作为本地AI代理解决方案,通过Docker Compose实现了前端、后端、搜索服务和缓存系统的无缝协同。项目采用分层架构设计,各服务通过专用网络实现安全通信,同时保持开发灵活性和生产环境稳定性。核心服务包括:
- 前端服务:React开发环境,提供用户交互界面
- 后端服务:Python API服务,处理核心业务逻辑
- SearXNG:元搜索引擎,提供聚合搜索能力
- Redis:高性能缓存数据库,支持服务状态管理
Docker Compose核心配置解析
基础网络架构
项目使用agentic-seek-net桥接网络实现服务间通信,所有服务通过容器名称而非IP地址访问,提升配置稳定性。基础网络定义位于docker-compose.yml第107-109行:
networks:
agentic-seek-net:
driver: bridge
核心服务配置详解
Redis缓存服务
Redis作为状态存储核心,采用Valkey(Redis兼容版)实现数据持久化,配置位于docker-compose.yml第4-24行:
services:
redis:
container_name: redis
profiles: ["core", "full"]
image: docker.io/valkey/valkey:8-alpine
command: valkey-server --save 30 1 --loglevel warning
restart: unless-stopped
volumes:
- redis-data:/data
networks:
- agentic-seek-net
关键安全配置包括:
- 权限最小化:仅添加必要Linux capabilities(SETGID、SETUID等)
- 日志限制:单文件最大1MB,最多保留1个日志文件
- 持久化存储:使用命名卷
redis-data确保数据不丢失
SearXNG搜索服务
元搜索引擎配置位于docker-compose.yml第26-52行,通过8080端口提供搜索API:
searxng:
container_name: searxng
profiles: ["core", "full"]
image: docker.io/searxng/searxng:latest
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng:rw,z
environment:
- SEARXNG_BASE_URL=${SEARXNG_BASE_URL:-http://localhost:8080/}
depends_on:
- redis
networks:
- agentic-seek-net
服务依赖关系通过depends_on确保启动顺序,本地配置文件通过绑定挂载实现实时更新,无需重建镜像。
前后端服务协同
前端React应用与后端Python API的通信通过环境变量配置实现:
前端配置(docker-compose.yml第54-70行):
frontend:
container_name: frontend
build:
context: ./frontend
dockerfile: Dockerfile.frontend
ports:
- "3000:3000"
environment:
- REACT_APP_BACKEND_URL=http://localhost:7777
volumes:
- ./frontend/agentic-seek-front/src:/app/src:rw,z
networks:
- agentic-seek-net
后端配置(docker-compose.yml第72-99行):
backend:
container_name: backend
build:
context: .
dockerfile: Dockerfile.backend
ports:
- ${BACKEND_PORT:-7777}:${BACKEND_PORT:-7777}
environment:
- SEARXNG_BASE_URL=${SEARXNG_BASE_URL:-http://searxng:8080}
- REDIS_URL=${REDIS_BASE_URL:-redis://redis:6379/0}
networks:
- agentic-seek-net
特别注意:前端通过宿主机localhost:7777访问后端,而后端通过容器名称searxng和redis访问其他服务,体现了Docker网络的多宿主通信特性。
多环境部署策略
服务组合管理
通过Docker Compose profiles实现灵活部署:
core:基础功能(Redis + SearXNG)backend:仅后端服务full:完整系统(全部服务)
启动完整系统命令:
docker-compose --profile full up -d
环境变量配置
敏感信息和环境特定参数通过环境变量注入,主要配置项包括:
- API密钥:
OPENAI_API_KEY、DEEPSEEK_API_KEY等AI服务凭证 - 端口映射:
BACKEND_PORT自定义后端服务端口 - 服务URL:
SEARXNG_BASE_URL、REDIS_URL等内部服务地址
建议通过.env文件管理这些变量,避免直接修改配置文件。
网络安全最佳实践
容器隔离措施
所有服务均采用最小权限原则:
- 移除所有Linux capabilities,仅添加必要权限
- 使用非root用户运行(SearXNG服务使用UID/GID 1000)
- 挂载卷添加
z选项(SELinux上下文标签)增强安全性
数据持久化方案
项目使用两种持久化策略:
- 命名卷:Redis数据存储(
redis-data) - 绑定挂载:代码目录实时同步(前端src目录、后端代码根目录)
部署与维护指南
快速启动流程
- 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/ag/agenticSeek
cd agenticSeek
- 启动完整服务:
docker-compose --profile full up -d
- 访问服务:
- 前端界面:http://localhost:3000
- 后端API:http://localhost:7777
- 搜索服务:http://localhost:8080
服务状态监控
查看运行状态:
docker-compose ps
查看服务日志(以下以backend为例):
docker-compose logs -f backend
配置更新方法
修改配置文件后无需重启整个系统,仅需重启相关服务:
# 修改后端代码后
docker-compose restart backend
# 更新SearXNG配置后
docker-compose restart searxng
架构优化建议
网络性能调优
对于生产环境,建议:
- 将
agentic-seek-net网络驱动改为macvlan实现直接网络接入 - 添加Traefik反向代理实现SSL终止和请求路由
- 配置Redis主从复制提高缓存服务可用性
资源限制配置
为避免资源竞争,可添加资源限制:
services:
backend:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M
总结
AgenticSeek通过Docker Compose实现了复杂AI代理系统的简化部署,核心优势包括:
- 服务解耦:各组件独立扩展,避免单点故障
- 环境一致性:开发与生产环境配置统一
- 安全隔离:最小权限原则和网络隔离保护系统安全
- 灵活扩展:通过profiles和环境变量支持多场景部署
完整配置文件参见项目根目录下的docker-compose.yml,更多高级配置可参考SearXNG专用配置和官方文档docs/目录。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



