version: "3.8"

services:
  schema-registry:
    image: confluentinc/cp-schema-registry
    hostname: schema-registry
    container_name: schema-registry
    ports:
      - "8081:8081"
    environment:
      SCHEMA_REGISTRY_SCHEMA_REGISTRY_GROUP_ID: schema-registry-local-${USER}
      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas-local-${USER}
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: "SSL://b-1.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094,SSL://b-2.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094,SSL://b-3.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094"
      SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: SSL
      SCHEMA_REGISTRY_HOST_NAME: schema-registry
      SCHEMA_REGISTRY_LISTENERS: "http://0.0.0.0:8081"
      SCHEMA_REGISTRY_COMPATIBILITY_LEVEL: backward
    restart: unless-stopped

  ksqldb-server:
    build:
      context: .
      args:
        # Replace with your GitHub username and token.
        - GITHUB_USERNAME=${GITHUB_USERNAME}
        - GITHUB_TOKEN=${GITHUB_TOKEN}
    hostname: ksqldb-server
    container_name: ksqldb-server
    depends_on:
      - schema-registry
    ports:
      - "8088:8088"
    healthcheck:
        test: ["CMD-SHELL", "/usr/local/bin/healthcheck.sh"]
        interval: 5s
        timeout: 5s
        retries: 60
    environment:
      Environment: local
      # We use the local-<username> prefix here to isolate this environment from others.
      # The $USER environment variable is defined by the shell, no need to set it manually in .env.
      KSQL_GROUP_UNIQUE_IDENTIFIER: local-${USER}
      KSQL_BOOTSTRAP_SERVERS: "SSL://b-1.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094,SSL://b-2.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094,SSL://b-3.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094"
      KSQL_KSQL_SCHEMA_REGISTRY_URL: "http://schema-registry:8081"
      KSQL_USE_QUERY_FILE: "false"
    volumes:
      - ./connector_config.properties:/etc/kafka-connect/connector_config.properties

  akhq:
    image: tchiotludo/akhq
    hostname: akhq
    container_name: akhq
    ports:
      - "8080:8080"
    environment:
      JVM_OPTS: -Xms64M -Xmx128M
      AKHQ_CONFIGURATION: |
        akhq:
          connections:
            local-dev:
              properties:
                bootstrap.servers: "b-1.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094,b-2.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094,b-3.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094"
                security.protocol: SSL
              schema-registry:
                url: "http://schema-registry:8081"
                type: confluent
