docker-compose.yml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. services:
  2. postgres:
  3. image: pgvector/pgvector:pg16
  4. container_name: maxkb-postgres
  5. environment:
  6. POSTGRES_DB: maxkb
  7. POSTGRES_USER: postgres
  8. POSTGRES_PASSWORD: postgres
  9. volumes:
  10. - postgres_data:/var/lib/postgresql/data
  11. - ./postgres-init.sql:/docker-entrypoint-initdb.d/init.sql
  12. ports:
  13. - "5432:5432"
  14. healthcheck:
  15. test: ["CMD-SHELL", "pg_isready -U postgres"]
  16. interval: 5s
  17. timeout: 5s
  18. retries: 5
  19. networks:
  20. - maxkb-network
  21. redis:
  22. image: redis:latest
  23. container_name: maxkb-redis
  24. volumes:
  25. - redis_data:/data
  26. ports:
  27. - "6379:6379"
  28. healthcheck:
  29. test: ["CMD", "redis-cli", "ping"]
  30. interval: 5s
  31. timeout: 5s
  32. retries: 5
  33. networks:
  34. - maxkb-network
  35. maxkb-frontend:
  36. image: zhagent-frontend:latest
  37. container_name: maxkb-frontend
  38. ports:
  39. - "80:80"
  40. networks:
  41. - maxkb-network
  42. restart: unless-stopped
  43. depends_on:
  44. - maxkb-web
  45. maxkb-web:
  46. image: zhagent-backend:latest
  47. container_name: maxkb-web
  48. command: ["/opt/maxkb-app/start.sh"]
  49. environment:
  50. MAXKB_CONFIG_TYPE: ENV
  51. MAXKB_DB_NAME: maxkb
  52. MAXKB_DB_HOST: postgres
  53. MAXKB_DB_PORT: 5432
  54. MAXKB_DB_USER: postgres
  55. MAXKB_DB_PASSWORD: postgres
  56. MAXKB_REDIS_HOST: redis
  57. MAXKB_REDIS_PORT: 6379
  58. MAXKB_REDIS_DB: 0
  59. MAXKB_CORE_WORKER: 4
  60. MAXKB_STATIC_PATH: /opt/maxkb-app/static
  61. MAXKB_HMAC_SIGNED_SERIALIZER_SECRET_KEY: zhagent_hmac_secret_key_2026
  62. ports:
  63. - "8080:8080"
  64. depends_on:
  65. postgres:
  66. condition: service_healthy
  67. redis:
  68. condition: service_healthy
  69. volumes:
  70. - model_data:/opt/maxkb-app/model/base
  71. - tmp_data:/opt/maxkb-app/tmp
  72. - log_data:/opt/maxkb-app/logs
  73. - static_data:/opt/maxkb-app/static
  74. networks:
  75. - maxkb-network
  76. restart: unless-stopped
  77. maxkb-celery:
  78. image: zhagent-backend:latest
  79. container_name: maxkb-celery
  80. command: ["python", "main.py", "dev", "celery"]
  81. environment:
  82. MAXKB_CONFIG_TYPE: ENV
  83. MAXKB_DB_NAME: maxkb
  84. MAXKB_DB_HOST: postgres
  85. MAXKB_DB_PORT: 5432
  86. MAXKB_DB_USER: postgres
  87. MAXKB_DB_PASSWORD: postgres
  88. MAXKB_REDIS_HOST: redis
  89. MAXKB_REDIS_PORT: 6379
  90. MAXKB_REDIS_DB: 0
  91. MAXKB_HMAC_SIGNED_SERIALIZER_SECRET_KEY: zhagent_hmac_secret_key_2026
  92. depends_on:
  93. postgres:
  94. condition: service_healthy
  95. redis:
  96. condition: service_healthy
  97. maxkb-web:
  98. condition: service_started
  99. volumes:
  100. - model_data:/opt/maxkb-app/model/base
  101. - tmp_data:/opt/maxkb-app/tmp
  102. - log_data:/opt/maxkb-app/logs
  103. networks:
  104. - maxkb-network
  105. restart: unless-stopped
  106. volumes:
  107. postgres_data:
  108. redis_data:
  109. model_data:
  110. tmp_data:
  111. log_data:
  112. static_data:
  113. networks:
  114. maxkb-network:
  115. driver: bridge