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

docker-compose.yml 6.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. version: '3.8'
  2. services:
  3. # PostgreSQL 数据库
  4. postgres:
  5. image: postgres:16
  6. container_name: wm-postgres
  7. environment:
  8. POSTGRES_DB: water_management
  9. POSTGRES_USER: postgres
  10. POSTGRES_PASSWORD: postgres
  11. ports:
  12. - "5432:5432"
  13. volumes:
  14. - postgres_data:/var/lib/postgresql/data
  15. - ./initdb:/docker-entrypoint-initdb.d
  16. networks:
  17. - water-management-net
  18. # TDengine 时序数据库
  19. tdengine:
  20. image: tdengine/tdengine:3.5.0
  21. container_name: wm-tdengine
  22. environment:
  23. TDENGINE_USER: root
  24. TDENGINE_PASSWORD: taosdata
  25. ports:
  26. - "6030:6030"
  27. - "6041:6041"
  28. volumes:
  29. - tdengine_data:/var/lib/tdengine
  30. networks:
  31. - water-management-net
  32. # Redis 缓存
  33. redis:
  34. image: redis:7-alpine
  35. container_name: wm-redis
  36. ports:
  37. - "6379:6379"
  38. volumes:
  39. - redis_data:/data
  40. networks:
  41. - water-management-net
  42. command: redis-server --requirepass redis123
  43. # Redis 可视化管理工具
  44. redis-commander:
  45. image: rediscommander/redis-commander:latest
  46. container_name: wm-redis-commander
  47. environment:
  48. REDIS_HOSTS: local:redis:6379:redis123
  49. ports:
  50. - "8081:8081"
  51. depends_on:
  52. - redis
  53. networks:
  54. - water-management-net
  55. # Kafka 消息队列
  56. zookeeper:
  57. image: confluentinc/cp-zookeeper:7.4.0
  58. container_name: wm-zookeeper
  59. environment:
  60. ZOOKEEPER_CLIENT_PORT: 2181
  61. ZOOKEEPER_TICK_TIME: 2000
  62. networks:
  63. - water-management-net
  64. kafka:
  65. image: confluentinc/cp-kafka:7.4.0
  66. container_name: wm-kafka
  67. depends_on:
  68. - zookeeper
  69. ports:
  70. - "9092:9092"
  71. environment:
  72. KAFKA_BROKER_ID: 1
  73. KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
  74. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:9092
  75. KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
  76. KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
  77. KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  78. KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
  79. volumes:
  80. - kafka_data:/var/lib/kafka
  81. networks:
  82. - water-management-net
  83. # Elasticsearch 搜索引擎
  84. elasticsearch:
  85. image: elasticsearch:8.11.0
  86. container_name: wm-elasticsearch
  87. environment:
  88. - discovery.type=single-node
  89. - xpack.security.enabled=false
  90. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  91. ports:
  92. - "9200:9200"
  93. - "9300:9300"
  94. volumes:
  95. - elasticsearch_data:/usr/share/elasticsearch/data
  96. networks:
  97. - water-management-net
  98. # Kibana 可视化工具
  99. kibana:
  100. image: kibana:8.11.0
  101. container_name: wm-kibana
  102. ports:
  103. - "5601:5601"
  104. depends_on:
  105. - elasticsearch
  106. environment:
  107. - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
  108. networks:
  109. - water-management-net
  110. # MinIO 对象存储
  111. minio:
  112. image: minio/minio:latest
  113. container_name: wm-minio
  114. ports:
  115. - "9000:9000"
  116. - "9001:9001"
  117. volumes:
  118. - minio_data:/data
  119. environment:
  120. MINIO_ROOT_USER: minioadmin
  121. MINIO_ROOT_PASSWORD: minioadmin123
  122. command: server /data --console-address ":9001"
  123. networks:
  124. - water-management-net
  125. # EMQX MQTT 消息服务器
  126. emqx:
  127. image: emqx:5.3.1
  128. container_name: wm-emqx
  129. ports:
  130. - "1883:1883"
  131. - "8083:8083"
  132. - "8084:8084"
  133. - "8883:8883"
  134. - "18083:18083"
  135. volumes:
  136. - emqx_data:/opt/emqx/data
  137. networks:
  138. - water-management-net
  139. # Nacos 服务注册与配置中心
  140. nacos:
  141. image: nacos/nacos-server:2.2.3
  142. container_name: wm-nacos
  143. environment:
  144. MODE: standalone
  145. SPRING_DATASOURCE_PLATFORM: mysql
  146. MYSQL_SERVICE_HOST: mysql
  147. MYSQL_SERVICE_PORT: 3306
  148. MYSQL_SERVICE_DB_NAME: nacos_config
  149. MYSQL_SERVICE_USER: nacos
  150. MYSQL_SERVICE_PASSWORD: nacos
  151. NACOS_SERVERS: "127.0.0.1:8848"
  152. ports:
  153. - "8848:8848"
  154. - "9848:9848"
  155. depends_on:
  156. - mysql
  157. volumes:
  158. - nacos_data:/home/nacos/data
  159. networks:
  160. - water-management-net
  161. # Nacos 数据库
  162. mysql:
  163. image: mysql:8.0
  164. container_name: wm-mysql
  165. environment:
  166. MYSQL_DATABASE: nacos_config
  167. MYSQL_USER: nacos
  168. MYSQL_PASSWORD: nacos
  169. MYSQL_ROOT_PASSWORD: root
  170. ports:
  171. - "3306:3306"
  172. volumes:
  173. - mysql_data:/var/lib/mysql
  174. networks:
  175. - water-management-net
  176. # GeoServer GIS 服务
  177. geoserver:
  178. image: geoserver:latest
  179. container_name: wm-geoserver
  180. ports:
  181. - "8082:8080"
  182. volumes:
  183. - geoserver_data:/opt/geoserver/data_dir
  184. networks:
  185. - water-management-net
  186. # Prometheus 监控系统
  187. prometheus:
  188. image: prom/prometheus:latest
  189. container_name: wm-prometheus
  190. ports:
  191. - "9090:9090"
  192. volumes:
  193. - ./prometheus.yml:/etc/prometheus/prometheus.yml
  194. - prometheus_data:/prometheus
  195. command:
  196. - '--config.file=/etc/prometheus/prometheus.yml'
  197. - '--storage.tsdb.path=/prometheus'
  198. - '--web.console.libraries=/etc/prometheus/console_libraries'
  199. - '--web.console.templates=/etc/prometheus/consoles'
  200. - '--web.enable-lifecycle'
  201. networks:
  202. - water-management-net
  203. # Grafana 可视化监控
  204. grafana:
  205. image: grafana/grafana:latest
  206. container_name: wm-grafana
  207. ports:
  208. - "3000:3000"
  209. environment:
  210. GF_SECURITY_ADMIN_PASSWORD: admin123
  211. volumes:
  212. - grafana_data:/var/lib/grafana
  213. networks:
  214. - water-management-net
  215. # SkyWalking 分布式追踪系统
  216. skywalking-oap:
  217. image: apache/skywalking-oap-server:9.4.0
  218. container_name: wm-skywalking-oap
  219. environment:
  220. SW_OAP_STORAGE_MODE: elasticsearch
  221. SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
  222. SW_STORAGE_ES_INDEX_PREFIX: skywalking-oap
  223. SW_STORAGE_ES_USER: elastic
  224. SW_STORAGE_ES_PASSWORD: changeme
  225. SW_HEALTH_CHECK_FILE: /tmp/health
  226. depends_on:
  227. - elasticsearch
  228. ports:
  229. - "1234:1234"
  230. - "1234:1234/udp"
  231. volumes:
  232. - skywalking_oap_data:/skywalking/oap/data
  233. networks:
  234. - water-management-net
  235. skywalking-ui:
  236. image: apache/skywalking-ui:9.4.0
  237. container_name: wm-skywalking-ui
  238. environment:
  239. SW_OAP_ADDRESS: skywalking-oap:1234
  240. depends_on:
  241. - skywalking-oap
  242. ports:
  243. - "8080:8080"
  244. networks:
  245. - water-management-net
  246. volumes:
  247. postgres_data:
  248. tdengine_data:
  249. redis_data:
  250. kafka_data:
  251. elasticsearch_data:
  252. minio_data:
  253. emqx_data:
  254. nacos_data:
  255. mysql_data:
  256. geoserver_data:
  257. prometheus_data:
  258. grafana_data:
  259. skywalking_oap_data:
  260. networks:
  261. water-management-net:
  262. driver: bridge