---
version: '3'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:${CONFLUENT_VERSION}
    hostname: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    networks:
      schema-registry-net:
        ipv4_address: ${ZOOKEEPER_IPV4}

  broker:
    image: confluentinc/cp-kafka:${CONFLUENT_VERSION}
    hostname: broker
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://172.68.0.102:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    networks:
      schema-registry-net:
        ipv4_address: ${KAFKA_BROKER_IPV4}

  schema_registry:
    image: confluentinc/cp-schema-registry:${CONFLUENT_VERSION}
    hostname: schema_registry
    depends_on:
      - zookeeper
      - broker
    ports:
      - "8081:8081"
    environment:
      SCHEMA_REGISTRY_HOST_NAME: ${SCHEMA_REGISTRY_IPV4}
      SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181'
      SCHEMA_REGISTRY_LISTENERS: "http://${SCHEMA_REGISTRY_IPV4}:8081"
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: 'PLAINTEXT://172.68.0.102:9092'
    networks:
      schema-registry-net:
        ipv4_address: ${SCHEMA_REGISTRY_IPV4}

networks:
  schema-registry-net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: "${CONFLUENT_NETWORK_SUBNET}"
          gateway: "${CONFLUENT_NETWORK_GATEWAY}"
