services:

  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
    ports:
      - '2181:2181'

  kafka:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper
    ports:
      - '9092:9092'
      - '29092:29092'
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

  redis:
    image: redis:alpine
    restart: always
    ports:
      - '6380:6379'

  app:
    build:
      context: .
      target: dev
    ports:
      - '8001:8080'
    depends_on:
      - kafka
      - redis
    environment:
      APP_DEBUG: 'true'
      PORT: 8080
      Environment: dev
      KAFKA_BOOTSTRAP_SERVERS: kafka:9092
    volumes:
      - .:/var/app

  lint-and-test:
    build:
      context: .
      dockerfile: Dockerfile.tests
    volumes:
      - ./build:/app/build

  integration-tests:
    build:
      context: .
      dockerfile: Dockerfile.integration
    environment:
      QA_BASE_URL: ${QA_BASE_URL:-}
