services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.7.0
    platform: linux/amd64
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - 2181:2181
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    restart: unless-stopped

  kafka:
    image: confluentinc/cp-kafka:7.7.0
    platform: linux/amd64
    hostname: kafka
    container_name: kafka
    depends_on:
      - zookeeper
    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://kafka: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_LOG4J_ROOT_LOGLEVEL: WARN
  
  mysql:
    image: quay.io/debezium/example-mysql:3.0
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=debezium
      - MYSQL_USER=mysqluser
      - MYSQL_PASSWORD=mysqlpw
  
  debezium-mysql-source:
    extends:
      file: docker-compose.yml
      service: debezium-mysql-source
    depends_on:
      - kafka
    env_file:
      - .env.local
    environment:
      CONNECT_BOOTSTRAP_SERVERS: 'kafka:29092'
      CONNECT_SECURITY_PROTOCOL: 'PLAINTEXT'
      CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
    volumes:
      - ${PWD}/.env.local:/etc/kafka-connect/connector_config.properties
  
  akhq:
    image: tchiotludo/akhq
    platform: linux/amd64
    hostname: akhq
    container_name: akhq
    depends_on:
      - kafka
    ports:
      - 8080:8080
    environment:
      JVM_OPTS: -Xms64M -Xmx128M
      AKHQ_CONFIGURATION: |
        akhq:
          connections:
            kafka-local:
              properties:
                bootstrap.servers: "kafka:29092"
              connect:
                - name: debezium-mysql
                  url: "http://debezium-mysql-source:8083"
