Files
aiguanlihoutai/docker-compose.yml
Dev Agent 883a925db5 feat: Agent任务系统 v2.1 完整实现
- 后端: FastAPI + SQLAlchemy 2.0 + Pydantic v2 + Celery (19个API模块)
- 前端: React 18 + TypeScript + Ant Design 5 + Zustand (19个页面组件)
- 权限: RBAC四维权限体系 (RB-01~RB-13)
- 任务: 四步向导创建 + 双执行器(龙虾/脚本) + 定时调度
- 部署: Docker Compose 6服务 + Nginx反代 + Alembic迁移

统计: 88个文件 | 8779行代码 | 默认账号: admin/admin123
2026-04-24 09:10:47 +00:00

112 lines
2.8 KiB
YAML

version: '3.9'
services:
# ── PostgreSQL ──
db:
image: postgres:16-alpine
container_name: agent_db
restart: always
environment:
POSTGRES_DB: agent_system
POSTGRES_USER: postgres
POSTGRES_PASSWORD: agent_system_2026
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
# ── Redis ──
redis:
image: redis:7-alpine
container_name: agent_redis
restart: always
ports:
- "6379:6379"
volumes:
- redisdata:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
# ── Backend API ──
backend:
build: ./backend
container_name: agent_backend
restart: always
env_file: ./backend/.env
environment:
DATABASE_URL: postgresql+asyncpg://postgres:agent_system_2026@db:5432/agent_system
REDIS_URL: redis://redis:6379/0
CELERY_BROKER_URL: redis://redis:6379/1
CELERY_RESULT_BACKEND: redis://redis:6379/2
ports:
- "8000:8000"
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
command: >
sh -c "
alembic upgrade head &&
python -m app.scripts.seed &&
uvicorn app.main:app --host 0.0.0.0 --port 8000
"
# ── Celery Worker ──
celery-worker:
build: ./backend
container_name: agent_celery_worker
restart: always
env_file: ./backend/.env
environment:
DATABASE_URL: postgresql+psycopg2://postgres:agent_system_2026@db:5432/agent_system
REDIS_URL: redis://redis:6379/0
CELERY_BROKER_URL: redis://redis:6379/1
CELERY_RESULT_BACKEND: redis://redis:6379/2
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
command: celery -A app.celery_app worker --loglevel=info --concurrency=4
# ── Celery Beat (定时调度) ──
celery-beat:
build: ./backend
container_name: agent_celery_beat
restart: always
env_file: ./backend/.env
environment:
DATABASE_URL: postgresql+psycopg2://postgres:agent_system_2026@db:5432/agent_system
REDIS_URL: redis://redis:6379/0
CELERY_BROKER_URL: redis://redis:6379/1
CELERY_RESULT_BACKEND: redis://redis:6379/2
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
command: celery -A app.celery_app beat --loglevel=info
# ── Frontend (Nginx + SPA) ──
frontend:
build: ./frontend
container_name: agent_frontend
restart: always
ports:
- "80:80"
depends_on:
- backend
volumes:
pgdata:
redisdata: