142 lines
3.9 KiB
YAML
142 lines
3.9 KiB
YAML
version: "3.9"
|
|
|
|
services:
|
|
zookeeper:
|
|
image: confluentinc/cp-zookeeper:7.3.1
|
|
hostname: zookeeper
|
|
container_name: zookeeper
|
|
ports:
|
|
- "2181:2181"
|
|
environment:
|
|
ZOOKEEPER_CLIENT_PORT: 2181
|
|
ZOOKEEPER_TICK_TIME: 2000
|
|
healthcheck:
|
|
test: echo srvr | nc zookeeper 2181 || exit 1
|
|
start_period: 10s
|
|
retries: 20
|
|
interval: 10s
|
|
broker:
|
|
image: confluentinc/cp-kafka:7.3.1
|
|
hostname: broker
|
|
container_name: broker
|
|
depends_on:
|
|
zookeeper:
|
|
condition: service_healthy
|
|
ports:
|
|
- "29092:29092"
|
|
- "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://broker: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_AUTO_CREATE_TOPICS_ENABLE: "true"
|
|
KAFKA_JMX_PORT: 9101
|
|
KAFKA_JMX_HOSTNAME: localhost
|
|
healthcheck:
|
|
test: nc -z localhost 9092 || exit -1
|
|
start_period: 15s
|
|
interval: 5s
|
|
timeout: 10s
|
|
retries: 10
|
|
debezium:
|
|
image: debezium/connect:latest
|
|
restart: always
|
|
container_name: debezium
|
|
hostname: debezium
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
broker:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8083:8083"
|
|
environment:
|
|
BOOTSTRAP_SERVERS: broker:29092
|
|
GROUP_ID: 1
|
|
CONFIG_STORAGE_TOPIC: connect_configs
|
|
STATUS_STORAGE_TOPIC: connect_statuses
|
|
OFFSET_STORAGE_TOPIC: connect_offsets
|
|
KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
|
|
VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
|
|
ENABLE_DEBEZIUM_SCRIPTING: "true"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "--silent", "--fail", "-X", "GET", "http://localhost:8083/connectors"]
|
|
start_period: 10s
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
schema-registry:
|
|
image: confluentinc/cp-schema-registry:7.3.1
|
|
hostname: schema-registry
|
|
container_name: schema-registry
|
|
depends_on:
|
|
broker:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8081:8081"
|
|
environment:
|
|
SCHEMA_REGISTRY_HOST_NAME: schema-registry
|
|
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: broker:29092
|
|
SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081
|
|
|
|
healthcheck:
|
|
start_period: 10s
|
|
interval: 10s
|
|
retries: 20
|
|
test: curl --user superUser:superUser --fail --silent --insecure http://localhost:8081/subjects --output /dev/null || exit 1
|
|
|
|
rest-proxy:
|
|
image: confluentinc/cp-kafka-rest:7.3.1
|
|
depends_on:
|
|
broker:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8082:8082"
|
|
hostname: rest-proxy
|
|
container_name: rest-proxy
|
|
environment:
|
|
KAFKA_REST_HOST_NAME: rest-proxy
|
|
KAFKA_REST_BOOTSTRAP_SERVERS: 'broker:29092'
|
|
KAFKA_REST_LISTENERS: "http://0.0.0.0:8082"
|
|
|
|
debezium-ui:
|
|
image: debezium/debezium-ui:latest
|
|
restart: always
|
|
container_name: debezium-ui
|
|
hostname: debezium-ui
|
|
depends_on:
|
|
debezium:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
KAFKA_CONNECT_URIS: http://debezium:8083
|
|
|
|
|
|
postgres:
|
|
image: postgres:latest
|
|
restart: always
|
|
container_name: postgres
|
|
hostname: postgres
|
|
ports:
|
|
- "5432:5432"
|
|
environment:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: postgres
|
|
POSTGRES_DB: movies_db
|
|
command: ["postgres", "-c", "wal_level=logical"]
|
|
healthcheck:
|
|
test: ["CMD", "psql", "-U", "postgres", "-c", "SELECT 1"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
volumes:
|
|
- ./scripts:/docker-entrypoint-initdb.d
|