| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- services:
- # PostgreSQL with pgvector
- db:
- image: pgvector/pgvector:pg16
- container_name: zhagent-db
- restart: always
- environment:
- POSTGRES_DB: ${DB_NAME:-maxkb}
- POSTGRES_USER: ${DB_USER:-postgres}
- POSTGRES_PASSWORD: ${DB_PASSWORD:-zhagent123}
- ports:
- - "5432:5432"
- volumes:
- - ${DATA_PATH:-./data}/postgresql:/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: zhagent-redis
- restart: always
- ports:
- - "6379:6379"
- volumes:
- - ${DATA_PATH:-./data}/redis:/data
- healthcheck:
- test: ["CMD", "redis-cli", "ping"]
- interval: 10s
- timeout: 5s
- retries: 5
- # Django Web
- web:
- build: .
- container_name: zhagent-web
- restart: always
- command: python main.py dev web
- ports:
- - "8080:8080"
- environment:
- - MAXKB_CONFIG_TYPE=ENV
- - MAXKB_DB_HOST=db
- - MAXKB_DB_PORT=5432
- - MAXKB_DB_USER=${DB_USER:-postgres}
- - MAXKB_DB_PASSWORD=${DB_PASSWORD:-zhagent123}
- - MAXKB_DB_NAME=${DB_NAME:-maxkb}
- - MAXKB_REDIS_HOST=redis
- - MAXKB_REDIS_PORT=6379
- - MAXKB_REDIS_PASSWORD=${REDIS_PASSWORD:-}
- - MAXKB_REDIS_DB=${REDIS_DB:-0}
- - MAXKB_DEBUG=${DEBUG:-false}
- - MAXKB_APP_TITLE=${APP_TITLE:-智能体平台}
- - MAXKB_APP_VERSION=${APP_VERSION:-v1.0}
- - MAXKB_SSO_BASE_URL=${SSO_BASE_URL:-}
- - MAXKB_SSO_CLIENT_ID=${SSO_CLIENT_ID:-}
- - MAXKB_SSO_CLIENT_SECRET=${SSO_CLIENT_SECRET:-}
- - MAXKB_SSO_REDIRECT_URI=${SSO_REDIRECT_URI:-}
- - MAXKB_SSO_LOGOUT_REDIRECT_URL=${SSO_LOGOUT_REDIRECT_URL:-}
- - MAXKB_SAMPLE_CENTER_BASE_URL=${SAMPLE_CENTER_BASE_URL:-}
- - MAXKB_SAMPLE_CENTER_APP_ID=${SAMPLE_CENTER_APP_ID:-}
- - MAXKB_SAMPLE_CENTER_APP_SECRET=${SAMPLE_CENTER_APP_SECRET:-}
- volumes:
- - ${UPLOAD_PATH:-./data/uploads}:/app/uploads
- - ./apps/static:/app/apps/static
- depends_on:
- db:
- condition: service_healthy
- redis:
- condition: service_healthy
- # Celery Worker
- celery:
- build: .
- container_name: zhagent-celery
- restart: always
- command: python main.py dev celery
- environment:
- - MAXKB_CONFIG_TYPE=ENV
- - MAXKB_DB_HOST=db
- - MAXKB_DB_PORT=5432
- - MAXKB_DB_USER=${DB_USER:-postgres}
- - MAXKB_DB_PASSWORD=${DB_PASSWORD:-zhagent123}
- - MAXKB_DB_NAME=${DB_NAME:-maxkb}
- - MAXKB_REDIS_HOST=redis
- - MAXKB_REDIS_PORT=6379
- - MAXKB_REDIS_PASSWORD=${REDIS_PASSWORD:-}
- - MAXKB_REDIS_DB=${REDIS_DB:-0}
- - MAXKB_DEBUG=${DEBUG:-false}
- - MAXKB_APP_TITLE=${APP_TITLE:-智能体平台}
- - MAXKB_APP_VERSION=${APP_VERSION:-v1.0}
- - MAXKB_SSO_BASE_URL=${SSO_BASE_URL:-}
- - MAXKB_SSO_CLIENT_ID=${SSO_CLIENT_ID:-}
- - MAXKB_SSO_CLIENT_SECRET=${SSO_CLIENT_SECRET:-}
- - MAXKB_SSO_REDIRECT_URI=${SSO_REDIRECT_URI:-}
- - MAXKB_SSO_LOGOUT_REDIRECT_URL=${SSO_LOGOUT_REDIRECT_URL:-}
- - MAXKB_SAMPLE_CENTER_BASE_URL=${SAMPLE_CENTER_BASE_URL:-}
- - MAXKB_SAMPLE_CENTER_APP_ID=${SAMPLE_CENTER_APP_ID:-}
- - MAXKB_SAMPLE_CENTER_APP_SECRET=${SAMPLE_CENTER_APP_SECRET:-}
- volumes:
- - ${UPLOAD_PATH:-./data/uploads}:/app/uploads
- depends_on:
- db:
- condition: service_healthy
- redis:
- condition: service_healthy
- # Nginx for frontend
- nginx:
- image: nginx:alpine
- container_name: zhagent-nginx
- restart: always
- ports:
- - "80:80"
- volumes:
- - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
- - ./ui/dist/admin:/usr/share/nginx/admin:ro
- - ./ui/dist/builder:/usr/share/nginx/builder:ro
- - ./ui/dist/chat:/usr/share/nginx/chat:ro
- depends_on:
- - web
|