services:
  orchard-maxwells-daemon:
    platform: linux/amd64
    depends_on:
      db:
        condition: service_healthy
    build:
     context: .
     args:
       MAXWELLS_VERSION: v1.44.0
    environment:
      - Environment=dev
      - DEBUG_MODE=true
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-dummy}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-dummy}
      - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN:-dummy}
      - MAXWELL_PRODUCER=kinesis
      - MAXWELL_MYSQL_HOST=${MAXWELL_MYSQL_HOST}
      - MAXWELL_MYSQL_USER=${MAXWELL_MYSQL_USER}
      - MAXWELL_MYSQL_PASSWORD=${MAXWELL_MYSQL_PASSWORD}
      - MAXWELL_MYSQL_CLIENT_ID=${MAXWELL_MYSQL_CLIENT_ID}
      - MAXWELL_MYSQL_REPLICA_SERVER_ID=${MAXWELL_MYSQL_REPLICA_SERVER_ID}
      - MAXWELL_MYSQL_SCHEMA_DATABASE=${MAXWELL_MYSQL_SCHEMA_DATABASE}
      - MAXWELL_PRODUCER_PARTITION_BY=${MAXWELL_PRODUCER_PARTITION_BY}
      - MAXWELL_PRODUCER_PARTITION_COLUMNS=${MAXWELL_PRODUCER_PARTITION_COLUMNS}
      - MAXWELL_PRODUCER_PARTITION_BY_FALLBACK=${MAXWELL_PRODUCER_PARTITION_BY_FALLBACK}
      - MAXWELL_KINESIS_STREAM=${MAXWELL_KINESIS_STREAM}
      - MAXWELL_KPL_KINESIS_ENDPOINT=${MAXWELL_KPL_KINESIS_ENDPOINT}
      - MAXWELL_KPL_KINESIS_PORT=${MAXWELL_KPL_KINESIS_PORT}
      - MAXWELL_KPL_CLOUDWATCH_ENDPOINT=${MAXWELL_KPL_CLOUDWATCH_ENDPOINT}
      - MAXWELL_KPL_CLOUDWATCH_PORT=${MAXWELL_KPL_CLOUDWATCH_PORT}
      - MAXWELL_KPL_VERIFYCERTIFICATE=${MAXWELL_KPL_VERIFYCERTIFICATE}
      - INCLUDE_EXPRESSIONS=${INCLUDE_EXPRESSIONS}
    healthcheck:
        test: ["CMD-SHELL", "curl", "-f", "http://localhost:8080/healthchk"]
        interval: 30s
        timeout: 5s
        retries: 5
    ports:
      - "8080:8080"
  db:
    image: mysql:5.7
    platform: linux/amd64
    environment:
      - MYSQL_ROOT_PASSWORD=root
    command: --server_id=1 --log_bin=ON
    healthcheck:
      test: ["CMD", 'mysql', '-h', 'localhost', '-u', '${MAXWELL_MYSQL_USER}', '-p${MAXWELL_MYSQL_PASSWORD}', '-D', '${MAXWELL_MYSQL_SCHEMA_DATABASE}']
      interval: 5s
      timeout: 5s
      retries: 10
    ports:
      - '3306:3306'
    volumes:
      - ./docker/init-mysql.sql:/docker-entrypoint-initdb.d/init-mysql.sql
      - db-data:/var/lib/mysql
  localstack:
    image: localstack/localstack
    ports:
      - "4566:4566" # LocalStack Gateway
      - "4567:4567" # Kinesis
    environment:
      - DEBUG=${DEBUG-}
      - PERSISTENCE=${PERSISTENCE-}
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./docker/init-aws.sh:/etc/localstack/init/ready.d/init-aws.sh" # setup resources

volumes:
  db-data:
