docker-compose.yaml ```yaml version: "3.9" services: mysql: image: mysql:8.0 container_name: if-mysql restart: always ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: "123456" MYSQL_DATABASE: "testdb" MYSQL_USER: "candide" MYSQL_PASSWORD: "123456" volumes: - ./data/mysql:/var/lib/mysql redis: image: redis:7 container_name: if-redis restart: always ports: - "6379:6379" command: ["redis-server", "--appendonly", "yes"] volumes: - ./data/redis:/data clickhouse: image: clickhouse/clickhouse-server:23.8 container_name: if-clickhouse restart: always ports: - "8123:8123" - "9000:9000" environment: CLICKHOUSE_DB: "testdb" CLICKHOUSE_USER: "candide" CLICKHOUSE_PASSWORD: "123456" CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1 volumes: - ./data/clickhouse:/var/lib/clickhouse - ./data/clickhouse-logs:/var/log/clickhouse-server ulimits: nofile: soft: 262144 hard: 262144 zookeeper: image: confluentinc/cp-zookeeper:7.4.0 container_name: if-zookeeper restart: always ports: - "2181:2181" environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 postgres: image: postgres:16 container_name: if-postgres restart: always ports: - "5432:5432" environment: POSTGRES_USER: "candide" POSTGRES_PASSWORD: "123456" POSTGRES_DB: "testdb" volumes: - ./data/postgres:/var/lib/postgresql/data kafka: image: confluentinc/cp-kafka:7.4.0 container_name: if-kafka restart: always ports: - "9092:9092" - "9101:9101" environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 KAFKA_JMX_PORT: 9101 KAFKA_JMX_HOSTNAME: localhost depends_on: - zookeeper kafka-ui: image: provectuslabs/kafka-ui:latest container_name: if-kafka-ui restart: always ports: - "18080:8080" environment: DYNAMIC_CONFIG_ENABLED: 'true' KAFKA_CLUSTERS_0_NAME: local KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181 depends_on: - kafka grafana: image: grafana/grafana:8.2.2 container_name: if-grafana restart: always ports: - "3000:3000" environment: GF_SECURITY_ADMIN_USER: admin GF_SECURITY_ADMIN_PASSWORD: admin123 GF_SECURITY_DISABLE_INITIAL_ADMIN_PASSWORD_CHANGE: "true" GF_SERVER_DOMAIN: localhost GF_SERVER_ROOT_URL: http://localhost:3000 TZ: Asia/Shanghai volumes: - ./data/grafana:/var/lib/grafana depends_on: - mysql - postgres - clickhouse prometheus: image: prom/prometheus:v2.30.2 container_name: if-prometheus restart: always ports: - "9090:9090" volumes: - ./data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro - ./data/prometheus/data:/prometheus command: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.path=/prometheus" - "--storage.tsdb.retention.time=15d" - "--web.enable-lifecycle" depends_on: - kafka - clickhouse if-dev1: image: ubuntu:24.04 container_name: if-dev1 tty: true stdin_open: true command: ["/bin/bash"] restart: always if-dev2: image: ubuntu:24.04 container_name: if-dev2 tty: true stdin_open: true command: ["/bin/bash"] restart: always if-dev3: image: ubuntu:24.04 container_name: if-dev3 tty: true stdin_open: true command: ["/bin/bash"] restart: always node-exporter-dev1: image: prom/node-exporter:v1.8.1 container_name: if-node-exporter-dev1 restart: always command: - "--path.rootfs=/host" volumes: - /:/host:ro,rslave depends_on: - if-dev1 node-exporter-dev2: image: prom/node-exporter:v1.8.1 container_name: if-node-exporter-dev2 restart: always command: - "--path.rootfs=/host" volumes: - /:/host:ro,rslave depends_on: - if-dev2 node-exporter-dev3: image: prom/node-exporter:v1.8.1 container_name: if-node-exporter-dev3 restart: always command: - "--path.rootfs=/host" volumes: - /:/host:ro,rslave depends_on: - if-dev3 ``` > 常见问题一 prometheus目录创建prometheus.yml会有些问题,参照下面步骤解决 ```bash sudo chown -R 65534:65534 ./data/prometheus/data sudo rm -rf ./data/prometheus/prometheus.yml sudo vim ./data/prometheus/prometheus.yml ``` > 写入下面内容: ```yaml global: scrape_interval: 15s scrape_configs: - job_name: prometheus static_configs: - targets: ["prometheus:9090"] - job_name: node-exporter static_configs: - targets: - node-exporter-dev1:9100 - node-exporter-dev2:9100 - node-exporter-dev3:9100 ``` 常见问题二 ```log mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied GF_PATHS_DATA='/var/lib/grafana' is not writable. You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied ``` 解决方式: ```bash sudo chown -R 1000:1000 ~/Init/data/grafana docker compose up -d ``` ...