智慧水务管理系统 - 精河县供水工程综合管理平台

docker-compose.yml 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. version: '3.8'
  2. services:
  3. # ==================== 基础设施 ====================
  4. postgres:
  5. image: postgis/postgis:16-3.4
  6. container_name: wm-postgres
  7. environment:
  8. POSTGRES_DB: water_management
  9. POSTGRES_USER: water
  10. POSTGRES_PASSWORD: water123
  11. ports:
  12. - "5432:5432"
  13. volumes:
  14. - pgdata:/var/lib/postgresql/data
  15. healthcheck:
  16. test: ["CMD-SHELL", "pg_isready -U water"]
  17. interval: 10s
  18. timeout: 5s
  19. retries: 5
  20. tdengine:
  21. image: tdengine/tdengine:3.3.3.0
  22. container_name: wm-tdengine
  23. ports:
  24. - "6030:6030"
  25. - "6041:6041"
  26. - "6043:6043"
  27. environment:
  28. TAOS_FQDN: tdengine
  29. volumes:
  30. - tddata:/var/lib/taos
  31. healthcheck:
  32. test: ["CMD", "taos", "-s", "show databases"]
  33. interval: 10s
  34. timeout: 5s
  35. retries: 5
  36. redis:
  37. image: redis:7-alpine
  38. container_name: wm-redis
  39. ports:
  40. - "6379:6379"
  41. volumes:
  42. - redisdata:/data
  43. healthcheck:
  44. test: ["CMD", "redis-cli", "ping"]
  45. interval: 10s
  46. timeout: 3s
  47. retries: 5
  48. # ==================== 消息队列 ====================
  49. kafka:
  50. image: bitnami/kafka:3.8
  51. container_name: wm-kafka
  52. ports:
  53. - "9092:9092"
  54. environment:
  55. KAFKA_CFG_NODE_ID: 0
  56. KAFKA_CFG_PROCESS_ROLES: controller,broker
  57. KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 0@kafka:9093
  58. KAFKA_CFG_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093
  59. KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://${KAFKA_ADVERTISED:-localhost}:9092
  60. KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
  61. KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
  62. KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "true"
  63. volumes:
  64. - kafkadata:/bitnami/kafka
  65. healthcheck:
  66. test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server localhost:9092 --list"]
  67. interval: 15s
  68. timeout: 10s
  69. retries: 5
  70. # ==================== 物联网 MQTT ====================
  71. emqx:
  72. image: emqx/emqx:5.7.2
  73. container_name: wm-emqx
  74. ports:
  75. - "1883:1883"
  76. - "8083:8083"
  77. - "18083:18083"
  78. environment:
  79. EMQX_DASHBOARD__DEFAULT_USERNAME: admin
  80. EMQX_DASHBOARD__DEFAULT_PASSWORD: public
  81. volumes:
  82. - emqxdata:/opt/emqx/data
  83. healthcheck:
  84. test: ["CMD", "emqx", "ping"]
  85. interval: 10s
  86. timeout: 5s
  87. retries: 5
  88. # ==================== 服务注册/配置 ====================
  89. nacos:
  90. image: nacos/nacos-server:v2.3.2
  91. container_name: wm-nacos
  92. environment:
  93. MODE: standalone
  94. PREFER_HOST_MODE: hostname
  95. ports:
  96. - "8848:8848"
  97. - "9848:9848"
  98. volumes:
  99. - nacosdata:/home/nacos/data
  100. healthcheck:
  101. test: ["CMD-SHELL", "curl -s http://localhost:8848/nacos/v1/console/health/readiness"]
  102. interval: 15s
  103. timeout: 5s
  104. retries: 5
  105. # ==================== 搜索引擎 ====================
  106. elasticsearch:
  107. image: elasticsearch:8.15.0
  108. container_name: wm-es
  109. environment:
  110. discovery.type: single-node
  111. xpack.security.enabled: "false"
  112. "ES_JAVA_OPTS": "-Xms512m -Xmx512m"
  113. ports:
  114. - "9200:9200"
  115. volumes:
  116. - esdata:/usr/share/elasticsearch/data
  117. kibana:
  118. image: kibana:8.15.0
  119. container_name: wm-kibana
  120. ports:
  121. - "5601:5601"
  122. environment:
  123. ELASTICSEARCH_HOSTS: http://elasticsearch:9200
  124. depends_on:
  125. - elasticsearch
  126. # ==================== 对象存储 ====================
  127. minio:
  128. image: minio/minio:latest
  129. container_name: wm-minio
  130. ports:
  131. - "9000:9000"
  132. - "9001:9001"
  133. environment:
  134. MINIO_ROOT_USER: minioadmin
  135. MINIO_ROOT_PASSWORD: minioadmin
  136. volumes:
  137. - miniodata:/data
  138. command: server /data --console-address ":9001"
  139. healthcheck:
  140. test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
  141. interval: 10s
  142. timeout: 5s
  143. retries: 5
  144. # ==================== GIS 地图服务 ====================
  145. geoserver:
  146. image: docker.osgeo.org/geoserver:2.25.2
  147. container_name: wm-geoserver
  148. ports:
  149. - "8081:8080"
  150. environment:
  151. INSTALL_EXTENSIONS: "true"
  152. STABLE_EXTENSIONS: "wps,csw"
  153. GEOSERVER_ADMIN_USER: admin
  154. GEOSERVER_ADMIN_PASSWORD: geoserver
  155. volumes:
  156. - geoserverdata:/opt/geoserver_data
  157. profiles:
  158. - gis
  159. healthcheck:
  160. test: ["CMD-SHELL", "curl -s http://localhost:8080/geoserver/web/"]
  161. interval: 20s
  162. timeout: 10s
  163. retries: 3
  164. volumes:
  165. pgdata:
  166. tddata:
  167. redisdata:
  168. kafkadata:
  169. emqxdata:
  170. nacosdata:
  171. esdata:
  172. miniodata:
  173. geoserverdata: