services: kafka: image: confluentinc/cp-kafka:7.8.0 hostname: kafka container_name: kcai-kafka ports: - "9092:9092" environment: KAFKA_NODE_ID: 1 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,HOST:PLAINTEXT KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,HOST://localhost:9092 KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:29092,CONTROLLER://0.0.0.0:29093,HOST://0.0.0.0:9092 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:29093 KAFKA_PROCESS_ROLES: broker,controller KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 CLUSTER_ID: kcai-dev-cluster-001 healthcheck: test: kafka-broker-api-versions --bootstrap-server localhost:9092 interval: 10s timeout: 10s retries: 5 schema-registry: image: confluentinc/cp-schema-registry:7.8.0 hostname: schema-registry container_name: kcai-schema-registry depends_on: kafka: condition: service_healthy ports: - "8081:8081" environment: SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka:29092 SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081 healthcheck: test: curl -f http://localhost:8081/ || exit 1 interval: 10s timeout: 10s retries: 5 connect: build: context: . dockerfile: Dockerfile hostname: connect container_name: kcai-connect depends_on: kafka: condition: service_healthy schema-registry: condition: service_healthy ports: - "8083:8083" environment: CONNECT_BOOTSTRAP_SERVERS: kafka:29092 CONNECT_REST_ADVERTISED_HOST_NAME: connect CONNECT_REST_PORT: 8083 CONNECT_GROUP_ID: kcai-connect-group CONNECT_CONFIG_STORAGE_TOPIC: _kcai-configs CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1 CONNECT_OFFSET_STORAGE_TOPIC: _kcai-offsets CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1 CONNECT_STATUS_STORAGE_TOPIC: _kcai-status CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1 CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter CONNECT_VALUE_CONVERTER_SCHEMAS_ENABLE: "false" CONNECT_PLUGIN_PATH: /usr/share/java,/usr/share/confluent-hub-components healthcheck: test: curl -f http://localhost:8083/connectors || exit 1 interval: 10s timeout: 10s retries: 10 start_period: 30s volumes: - ../kafka-connect-ai-connect/target/kafka-connect-ai-connect-0.1.0-SNAPSHOT-all.jar:/usr/share/java/kafka-connect-ai/kafka-connect-ai-connect.jar postgres: image: postgres:16-alpine hostname: postgres container_name: kcai-postgres ports: - "5432:5432" environment: POSTGRES_DB: kcai POSTGRES_USER: kcai POSTGRES_PASSWORD: kcai healthcheck: test: pg_isready -U kcai interval: 10s timeout: 5s retries: 5 redis: image: redis/redis-stack:7.4.0-v2 hostname: redis container_name: kcai-redis ports: - "6379:6379" - "8001:8001" healthcheck: test: redis-cli ping interval: 10s timeout: 5s retries: 5