docker-compose.yml 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. services:
  2. # PostgreSQL with pgvector
  3. db:
  4. image: pgvector/pgvector:pg16
  5. container_name: zhagent-db
  6. restart: always
  7. environment:
  8. POSTGRES_DB: maxkb
  9. POSTGRES_USER: postgres
  10. POSTGRES_PASSWORD: ${DB_PASSWORD:-zhagent123}
  11. ports:
  12. - "5432:5432"
  13. volumes:
  14. - ./data/postgresql:/var/lib/postgresql/data
  15. healthcheck:
  16. test: ["CMD-SHELL", "pg_isready -U postgres"]
  17. interval: 10s
  18. timeout: 5s
  19. retries: 5
  20. # Redis
  21. redis:
  22. image: redis:7-alpine
  23. container_name: zhagent-redis
  24. restart: always
  25. ports:
  26. - "6379:6379"
  27. volumes:
  28. - ./data/redis:/data
  29. healthcheck:
  30. test: ["CMD", "redis-cli", "ping"]
  31. interval: 10s
  32. timeout: 5s
  33. retries: 5
  34. # Django Web
  35. web:
  36. build: .
  37. container_name: zhagent-web
  38. restart: always
  39. command: python main.py dev web
  40. ports:
  41. - "8080:8080"
  42. environment:
  43. - MAXKB_CONFIG_TYPE=ENV
  44. - MAXKB_DB_HOST=db
  45. - MAXKB_DB_PORT=5432
  46. - MAXKB_DB_USER=postgres
  47. - MAXKB_DB_PASSWORD=${DB_PASSWORD:-zhagent123}
  48. - MAXKB_DB_NAME=maxkb
  49. - MAXKB_REDIS_HOST=redis
  50. - MAXKB_REDIS_PORT=6379
  51. - MAXKB_REDIS_PASSWORD=
  52. - MAXKB_REDIS_DB=0
  53. - MAXKB_DEBUG=false
  54. volumes:
  55. - ./data/uploads:/app/uploads
  56. - ./apps/static:/app/apps/static
  57. depends_on:
  58. db:
  59. condition: service_healthy
  60. redis:
  61. condition: service_healthy
  62. # Celery Worker
  63. celery:
  64. build: .
  65. container_name: zhagent-celery
  66. restart: always
  67. command: python main.py dev celery
  68. environment:
  69. - MAXKB_CONFIG_TYPE=ENV
  70. - MAXKB_DB_HOST=db
  71. - MAXKB_DB_PORT=5432
  72. - MAXKB_DB_USER=postgres
  73. - MAXKB_DB_PASSWORD=${DB_PASSWORD:-zhagent123}
  74. - MAXKB_DB_NAME=maxkb
  75. - MAXKB_REDIS_HOST=redis
  76. - MAXKB_REDIS_PORT=6379
  77. - MAXKB_REDIS_PASSWORD=
  78. - MAXKB_REDIS_DB=0
  79. - MAXKB_DEBUG=false
  80. volumes:
  81. - ./data/uploads:/app/uploads
  82. depends_on:
  83. db:
  84. condition: service_healthy
  85. redis:
  86. condition: service_healthy
  87. # Nginx for frontend
  88. nginx:
  89. image: nginx:alpine
  90. container_name: zhagent-nginx
  91. restart: always
  92. ports:
  93. - "80:80"
  94. volumes:
  95. - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
  96. - ./ui/admin/dist:/usr/share/nginx/admin:ro
  97. - ./ui/builder/dist:/usr/share/nginx/builder:ro
  98. - ./ui/chat/dist:/usr/share/nginx/chat:ro
  99. depends_on:
  100. - web