| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- version: '3.8'
-
- services:
- # PostgreSQL 数据库
- postgres:
- image: postgres:16
- container_name: wm-postgres
- environment:
- POSTGRES_DB: water_management
- POSTGRES_USER: postgres
- POSTGRES_PASSWORD: postgres
- ports:
- - "5432:5432"
- volumes:
- - postgres_data:/var/lib/postgresql/data
- - ./initdb:/docker-entrypoint-initdb.d
- networks:
- - water-management-net
-
- # TDengine 时序数据库
- tdengine:
- image: tdengine/tdengine:3.5.0
- container_name: wm-tdengine
- environment:
- TDENGINE_USER: root
- TDENGINE_PASSWORD: taosdata
- ports:
- - "6030:6030"
- - "6041:6041"
- volumes:
- - tdengine_data:/var/lib/tdengine
- networks:
- - water-management-net
-
- # Redis 缓存
- redis:
- image: redis:7-alpine
- container_name: wm-redis
- ports:
- - "6379:6379"
- volumes:
- - redis_data:/data
- networks:
- - water-management-net
- command: redis-server --requirepass redis123
-
- # Redis 可视化管理工具
- redis-commander:
- image: rediscommander/redis-commander:latest
- container_name: wm-redis-commander
- environment:
- REDIS_HOSTS: local:redis:6379:redis123
- ports:
- - "8081:8081"
- depends_on:
- - redis
- networks:
- - water-management-net
-
- # Kafka 消息队列
- zookeeper:
- image: confluentinc/cp-zookeeper:7.4.0
- container_name: wm-zookeeper
- environment:
- ZOOKEEPER_CLIENT_PORT: 2181
- ZOOKEEPER_TICK_TIME: 2000
- networks:
- - water-management-net
-
- kafka:
- image: confluentinc/cp-kafka:7.4.0
- container_name: wm-kafka
- depends_on:
- - zookeeper
- ports:
- - "9092:9092"
- environment:
- KAFKA_BROKER_ID: 1
- KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
- KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:9092
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
- KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
- KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
- volumes:
- - kafka_data:/var/lib/kafka
- networks:
- - water-management-net
-
- # Elasticsearch 搜索引擎
- elasticsearch:
- image: elasticsearch:8.11.0
- container_name: wm-elasticsearch
- environment:
- - discovery.type=single-node
- - xpack.security.enabled=false
- - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- ports:
- - "9200:9200"
- - "9300:9300"
- volumes:
- - elasticsearch_data:/usr/share/elasticsearch/data
- networks:
- - water-management-net
-
- # Kibana 可视化工具
- kibana:
- image: kibana:8.11.0
- container_name: wm-kibana
- ports:
- - "5601:5601"
- depends_on:
- - elasticsearch
- environment:
- - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- networks:
- - water-management-net
-
- # MinIO 对象存储
- minio:
- image: minio/minio:latest
- container_name: wm-minio
- ports:
- - "9000:9000"
- - "9001:9001"
- volumes:
- - minio_data:/data
- environment:
- MINIO_ROOT_USER: minioadmin
- MINIO_ROOT_PASSWORD: minioadmin123
- command: server /data --console-address ":9001"
- networks:
- - water-management-net
-
- # EMQX MQTT 消息服务器
- emqx:
- image: emqx:5.3.1
- container_name: wm-emqx
- ports:
- - "1883:1883"
- - "8083:8083"
- - "8084:8084"
- - "8883:8883"
- - "18083:18083"
- volumes:
- - emqx_data:/opt/emqx/data
- networks:
- - water-management-net
-
- # Nacos 服务注册与配置中心
- nacos:
- image: nacos/nacos-server:2.2.3
- container_name: wm-nacos
- environment:
- MODE: standalone
- SPRING_DATASOURCE_PLATFORM: mysql
- MYSQL_SERVICE_HOST: mysql
- MYSQL_SERVICE_PORT: 3306
- MYSQL_SERVICE_DB_NAME: nacos_config
- MYSQL_SERVICE_USER: nacos
- MYSQL_SERVICE_PASSWORD: nacos
- NACOS_SERVERS: "127.0.0.1:8848"
- ports:
- - "8848:8848"
- - "9848:9848"
- depends_on:
- - mysql
- volumes:
- - nacos_data:/home/nacos/data
- networks:
- - water-management-net
-
- # Nacos 数据库
- mysql:
- image: mysql:8.0
- container_name: wm-mysql
- environment:
- MYSQL_DATABASE: nacos_config
- MYSQL_USER: nacos
- MYSQL_PASSWORD: nacos
- MYSQL_ROOT_PASSWORD: root
- ports:
- - "3306:3306"
- volumes:
- - mysql_data:/var/lib/mysql
- networks:
- - water-management-net
-
- # GeoServer GIS 服务
- geoserver:
- image: geoserver:latest
- container_name: wm-geoserver
- ports:
- - "8082:8080"
- volumes:
- - geoserver_data:/opt/geoserver/data_dir
- networks:
- - water-management-net
-
- # Prometheus 监控系统
- prometheus:
- image: prom/prometheus:latest
- container_name: wm-prometheus
- ports:
- - "9090:9090"
- volumes:
- - ./prometheus.yml:/etc/prometheus/prometheus.yml
- - prometheus_data:/prometheus
- command:
- - '--config.file=/etc/prometheus/prometheus.yml'
- - '--storage.tsdb.path=/prometheus'
- - '--web.console.libraries=/etc/prometheus/console_libraries'
- - '--web.console.templates=/etc/prometheus/consoles'
- - '--web.enable-lifecycle'
- networks:
- - water-management-net
-
- # Grafana 可视化监控
- grafana:
- image: grafana/grafana:latest
- container_name: wm-grafana
- ports:
- - "3000:3000"
- environment:
- GF_SECURITY_ADMIN_PASSWORD: admin123
- volumes:
- - grafana_data:/var/lib/grafana
- networks:
- - water-management-net
-
- # SkyWalking 分布式追踪系统
- skywalking-oap:
- image: apache/skywalking-oap-server:9.4.0
- container_name: wm-skywalking-oap
- environment:
- SW_OAP_STORAGE_MODE: elasticsearch
- SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
- SW_STORAGE_ES_INDEX_PREFIX: skywalking-oap
- SW_STORAGE_ES_USER: elastic
- SW_STORAGE_ES_PASSWORD: changeme
- SW_HEALTH_CHECK_FILE: /tmp/health
- depends_on:
- - elasticsearch
- ports:
- - "1234:1234"
- - "1234:1234/udp"
- volumes:
- - skywalking_oap_data:/skywalking/oap/data
- networks:
- - water-management-net
-
- skywalking-ui:
- image: apache/skywalking-ui:9.4.0
- container_name: wm-skywalking-ui
- environment:
- SW_OAP_ADDRESS: skywalking-oap:1234
- depends_on:
- - skywalking-oap
- ports:
- - "8080:8080"
- networks:
- - water-management-net
-
- volumes:
- postgres_data:
- tdengine_data:
- redis_data:
- kafka_data:
- elasticsearch_data:
- minio_data:
- emqx_data:
- nacos_data:
- mysql_data:
- geoserver_data:
- prometheus_data:
- grafana_data:
- skywalking_oap_data:
-
- networks:
- water-management-net:
- driver: bridge
|