services:
  chirpstack:
    build:
      context: .
      dockerfile: Dockerfile-devel
    volumes:
      - ./:/chirpstack
    depends_on:
      - postgres
      - redis
      - mosquitto
      - rabbitmq
      - kafka
    environment:
      - DATABASE_URL=postgres://chirpstack_test:chirpstack_test@postgres/chirpstack_test?sslmode=disable
      - REDIS_HOST=redis
      - POSTGRESQL_HOST=postgres
      - MQTT_BROKER_HOST=mosquitto
      - TEST_POSTGRESQL_DSN=postgres://chirpstack_test:chirpstack_test@postgres/chirpstack_test?sslmode=disable
      - TEST_REDIS_URL=redis://redis/1
      - TEST_MOSQUITTO_SERVER=tcp://mosquitto:1883/
      - TEST_KAFKA_BROKER=kafka:9092
      - TEST_AMQP_URL=amqp://guest:guest@rabbitmq:5672
    ports:
      - "8080:8080"

  postgres:
    image: postgres:11-alpine
    volumes:
      - ./.docker-compose/postgresql/initdb:/docker-entrypoint-initdb.d
    environment:
      - POSTGRES_HOST_AUTH_METHOD=trust
    ports:
      - "5432:5432"

  redis:
    image: redis:6-alpine
    ports:
      - "6379:6379"

  mosquitto:
    image: eclipse-mosquitto:1.6
    ports:
      - "1883:1883"

  rabbitmq:
    image: rabbitmq:3-management-alpine
    ports:
      - "15672:15672"
      - "5672:5672"

  zookeeper:
    image: 'bitnami/zookeeper:3'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes

  kafka:
    image: 'bitnami/kafka:3'
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"