version: '3.4'

services:
  sqldata:
    container_name: sqldata
    image: mcr.microsoft.com/mssql/server:2019-latest
    environment:
      SA_PASSWORD: Your_password123
      ACCEPT_EULA: Y
    ports:
      - "1433:1433"

  rabbitmq:
    image: rabbitmq:3-management-alpine
    ports:
      - "15672:15672"
      - "5671:5671"
      - "5672:5672"
    environment:
      RABBITMQ_DEFAULT_PASS: password
      RABBITMQ_DEFAULT_USER: admin

  otel-collector:
    image: public.ecr.aws/aws-observability/aws-otel-collector:latest
    volumes:
      - ./aws-otel-collector-config/aws-collector-config.yaml:/etc/otel-agent-config.yaml
    environment:
      - AWS_REGION=<AWS_REGION>
      - AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID>
      - AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY>
    ports:
      - '4317:4317'

  order.api:
    build:
      context: .
      dockerfile: NET6.Microservice.Order.API/Dockerfile
    ports:
      - "5089:80"
    environment:
      - DOTNET_ENVIRONMENT=Development
      - Serilog:WriteTo:0:Args:path=/app/logs/NET6.Microservice.Order.API.logs.json
      - MassTransit:MessageBusRabbitMQ=amqp://admin:password@rabbitmq:5671/
      - OpenTelemetry:OtelCollector=http://otel-collector:4317/
      - OpenTelemetry:IsAWSExporter=true
    depends_on:
      - rabbitmq

  catalog.api:
    build:
      context: .
      dockerfile: NET6.Microservice.Catalog.API/Dockerfile
    ports:
      - "5226:80"
    environment:
      - DOTNET_ENVIRONMENT=Development
      - Serilog:WriteTo:0:Args:path=/app/logs/NET6.Microservice.Catalog.API.logs.json
      - MassTransit:MessageBusRabbitMQ=amqp://admin:password@rabbitmq:5671/
      - OpenTelemetry:OtelCollector=http://otel-collector:4317/
      - OpenTelemetry:IsAWSExporter=true
    depends_on:
      - rabbitmq

  workerservice:
    build:
      context: .
      dockerfile: NET6.Microservice.WorkerService/Dockerfile
    environment:
      - DOTNET_ENVIRONMENT=Development
      - Serilog:WriteTo:0:Args:path=/app/logs/NET6.Microservice.WorkerService.logs.json
      - MassTransit:MessageBusRabbitMQ=amqp://admin:password@rabbitmq:5671/
      - OpenTelemetry:OtelCollector=http://otel-collector:4317/
      - OpenTelemetry:IsAWSExporter=true
    depends_on:
      - rabbitmq