version: "3"
services:
  service-dal:
    image: plutotv/service-dal:latest
    links:
      - mongodb
    depends_on:
      - mongodb
      - otel-collector
    networks:
      - pluto_net
    environment:
      MONGO_DB_URL: "mongodb://mongodb:27018/pluto-docker"
      GRPC_SOCKET_ADDRESS: "0.0.0.0:50051"
      LOG_LEVEL: "debug"
      PLUTO_DAL_WRITE_TOKENS: "testToken"
      PLUTO_OPENTELEMETRY_ENDPOINT: "http://otel-collector:9411"
      USE_MOCK_KUE_RUNNER: "true"
      Sealights_API_Key: "${Sealights_API_Key}"
    ports:
      - "50051:50051"
      - "8080:8080"
      - "9464:9464"

  #  Currently, the mongodb image does not support replica sets needed
  #  mongodb:
  #    hostname: mongodb
  #    image: 157385605725.dkr.ecr.us-east-1.amazonaws.com/inf-data-mongo:4.4-latest
  #    networks:
  #      - pluto_net
  #    ports:
  #      - "27018:27018"
  #    healthcheck:
  #      test: test $$(echo "rs.initiate({_id:'rs0',members:[{_id:0,host:\"mongodb:27018\"}]}).ok || rs.status().ok" | mongo --port 27018  --quiet) -eq 1
  #      interval: 10s
  #      start_period: 30s
  #    command: mongod --replSet rs0 --port 27018

  mongodb:
    hostname: mongodb
    image: mongo:4.4
    networks:
      - pluto_net
    # Specify port 27018 for mongo port. Helps with mongo replica and running multiple instances of mongo.
    command: mongod --replSet rs0 --port 27018
    ports:
      - "27018:27018"
    healthcheck:
      test: test $$(echo "rs.initiate({_id:'rs0',members:[{_id:0,host:\"mongodb:27018\"}]}).ok || rs.status().ok" | mongo --port 27018  --quiet) -eq 1
      interval: 10s
      start_period: 30s

  otel-collector:
    container_name: otel-collector
    image: otel/opentelemetry-collector-contrib:0.43.0
    networks:
      - pluto_net
    ports:
      - "55670:55679" # zpages extension - UI
      - "55681" # OTLP http receiver
      - "9411:9411" # Zipkin Receiver
    depends_on:
      - jaeger
    volumes:
      - ${PWD}/otel-agent-config.dev.yaml:/etc/otelcol-contrib/config.yaml

  jaeger:
    container_name: jaeger
    image: jaegertracing/all-in-one:latest
    networks:
      - pluto_net
    ports:
      - "16686:16686" # UI Port
      - "14250" # Jaeger Port exposed for tracing collection

networks:
  pluto_net:
    driver: bridge
