version: "3.8"
|
services:
|
# kafka
|
kafka:
|
image: bitnami/kafka:3.4
|
environment:
|
# 启用KRaft模式
|
KAFKA_BROKER_ID: 1
|
KAFKA_ENABLE_KRAFT: yes
|
KAFKA_CFG_PROCESS_ROLES: broker,controller
|
KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
|
#KAFKA_CFG_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093,SASL_PLAINTEXT://:9094
|
#KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://192.168.11.203:9092,SASL_PLAINTEXT://192.168.11.203:9094
|
KAFKA_CFG_LISTENERS: CONTROLLER://:9093,SASL_PLAINTEXT://:9092
|
KAFKA_CFG_ADVERTISED_LISTENERS: SASL_PLAINTEXT://192.168.11.203:9092
|
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT
|
KAFKA_CFG_INTER_BROKER_LISTENER_NAME: SASL_PLAINTEXT
|
# 强制设置集群ID(必须唯一)
|
KAFKA_CFG_NODE_ID: 1
|
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093
|
KAFKA_KRAFT_CLUSTER_ID: kgvdPTwkStm6XDCOCZLi0w
|
# SASL/PLAIN认证配置
|
KAFKA_CFG_SASL_ENABLED_MECHANISMS: PLAIN
|
KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
|
KAFKA_CLIENT_USERS: admin
|
KAFKA_CLIENT_PASSWORDS: kaFka_12#$56
|
# 其他必要参数
|
#ALLOW_PLAINTEXT_LISTENER: yes
|
healthcheck:
|
test: ["CMD", "kafka-broker-api-versions", "--bootstrap-server", "localhost:9092"]
|
interval: 10s
|
timeout: 2s
|
retries: 3
|
start_period: 3s
|
volumes:
|
# chmod -R 777 kafka_data/
|
- ./kafka_data:/bitnami/kafka
|
- /var/run/docker.sock:/var/run/docker.sock
|
ports:
|
- 9092:9092
|
#- 9094:9094
|
privileged: true
|
networks:
|
- network-jhs
|
# mongo
|
mongo:
|
image: mongo:8
|
environment:
|
MONGO_INITDB_ROOT_USERNAME: admin
|
MONGO_INITDB_ROOT_PASSWORD: MonGo_8sQ2jP
|
healthcheck:
|
test: ["CMD", "mongo", "--eval", "db.adminCommand('ping')"]
|
interval: 10s
|
timeout: 2s
|
retries: 3
|
start_period: 3s
|
ports:
|
- 27017:27017
|
volumes:
|
- ./mongo_data:/data/db
|
networks:
|
- network-jhs
|
networks:
|
network-jhs:
|
driver: bridge
|