2026-03-30 02:53:55 +00:00
|
|
|
services:
|
|
|
|
|
postgres:
|
|
|
|
|
image: postgres:16
|
|
|
|
|
container_name: muyu-postgres
|
|
|
|
|
restart: always
|
|
|
|
|
environment:
|
|
|
|
|
POSTGRES_USER: muyu
|
2026-06-17 23:16:28 +08:00
|
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
|
2026-03-30 02:53:55 +00:00
|
|
|
POSTGRES_DB: muyu_crm
|
|
|
|
|
TZ: Asia/Shanghai
|
|
|
|
|
ports:
|
|
|
|
|
- "5432:5432"
|
|
|
|
|
volumes:
|
|
|
|
|
- ./postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
|
|
|
|
|
- ../data/postgres:/var/lib/postgresql/data
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "pg_isready -U muyu -d muyu_crm"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 8
|
|
|
|
|
|
|
|
|
|
kafka:
|
|
|
|
|
image: bitnami/kafka:3.8
|
|
|
|
|
container_name: muyu-kafka
|
|
|
|
|
restart: always
|
|
|
|
|
environment:
|
|
|
|
|
- KAFKA_CFG_NODE_ID=1
|
|
|
|
|
- KAFKA_CFG_PROCESS_ROLES=broker,controller
|
|
|
|
|
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
|
|
|
|
|
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
|
|
|
|
|
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
|
|
|
|
|
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
|
|
|
|
|
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
|
|
|
|
|
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
|
|
|
|
|
- KAFKA_CFG_NUM_PARTITIONS=3
|
|
|
|
|
ports:
|
|
|
|
|
- "9092:9092"
|
|
|
|
|
volumes:
|
|
|
|
|
- ../data/kafka:/bitnami/kafka
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server localhost:9092 --list || exit 1"]
|
|
|
|
|
interval: 15s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 10
|
|
|
|
|
|
|
|
|
|
debezium:
|
|
|
|
|
image: debezium/connect:2.7
|
|
|
|
|
container_name: muyu-debezium
|
|
|
|
|
restart: always
|
|
|
|
|
depends_on:
|
|
|
|
|
postgres:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
kafka:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
environment:
|
|
|
|
|
BOOTSTRAP_SERVERS: kafka:9092
|
|
|
|
|
GROUP_ID: 1
|
|
|
|
|
CONFIG_STORAGE_TOPIC: debezium_connect_configs
|
|
|
|
|
OFFSET_STORAGE_TOPIC: debezium_connect_offsets
|
|
|
|
|
STATUS_STORAGE_TOPIC: debezium_connect_statuses
|
|
|
|
|
CONNECT_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
|
|
|
|
|
CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
|
|
|
|
|
CONNECT_KEY_CONVERTER_SCHEMAS_ENABLE: "false"
|
|
|
|
|
CONNECT_VALUE_CONVERTER_SCHEMAS_ENABLE: "false"
|
|
|
|
|
ports:
|
|
|
|
|
- "8083:8083"
|
|
|
|
|
|
|
|
|
|
neo4j:
|
|
|
|
|
image: neo4j:5.26
|
|
|
|
|
container_name: muyu-neo4j
|
|
|
|
|
restart: always
|
|
|
|
|
environment:
|
2026-06-17 23:16:28 +08:00
|
|
|
NEO4J_AUTH: ${NEO4J_AUTH:?Set NEO4J_AUTH in .env (e.g. neo4j/yourpassword)}
|
2026-03-30 02:53:55 +00:00
|
|
|
NEO4J_server_memory_heap_initial__size: 512m
|
|
|
|
|
NEO4J_server_memory_heap_max__size: 1024m
|
|
|
|
|
NEO4J_server_default__listen__address: 0.0.0.0
|
|
|
|
|
ports:
|
|
|
|
|
- "7474:7474"
|
|
|
|
|
- "7687:7687"
|
|
|
|
|
volumes:
|
|
|
|
|
- ../data/neo4j/data:/data
|
|
|
|
|
- ../data/neo4j/logs:/logs
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "wget -qO- http://localhost:7474 || exit 1"]
|
|
|
|
|
interval: 15s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 10
|
|
|
|
|
|
|
|
|
|
graphsync:
|
|
|
|
|
build:
|
|
|
|
|
context: ..
|
|
|
|
|
dockerfile: deploy/Dockerfile.graphsync
|
|
|
|
|
container_name: muyu-graphsync
|
|
|
|
|
restart: always
|
|
|
|
|
depends_on:
|
|
|
|
|
kafka:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
neo4j:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
environment:
|
|
|
|
|
KAFKA_BROKERS: kafka:9092
|
|
|
|
|
KAFKA_TOPIC: muyu_crm.public.crm_tenant_relationship
|
|
|
|
|
KAFKA_GROUP: graphsync
|
|
|
|
|
NEO4J_URI: bolt://neo4j:7687
|
|
|
|
|
NEO4J_USER: neo4j
|
2026-06-17 23:16:28 +08:00
|
|
|
NEO4J_PASS: ${NEO4J_PASS:?Set NEO4J_PASS in .env}
|
2026-03-30 02:53:55 +00:00
|
|
|
TZ: Asia/Shanghai
|
|
|
|
|
|
|
|
|
|
kafka-ui:
|
|
|
|
|
image: provectuslabs/kafka-ui:latest
|
|
|
|
|
container_name: muyu-kafka-ui
|
|
|
|
|
restart: always
|
|
|
|
|
depends_on:
|
|
|
|
|
kafka:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
environment:
|
|
|
|
|
KAFKA_CLUSTERS_0_NAME: local
|
|
|
|
|
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
|
|
|
|
|
ports:
|
|
|
|
|
- "8086:8080"
|