services:

  engine_local:
    image: 'optionedge/engine:1.0.208'
    container_name: engine_local
    restart: always
    ports:
     - "7500:8080"
    environment:
     - TZ=Asia/Kolkata
     - Auth:Domain=https://auth.optionedge.in/oidc
     - Auth:Audience=https://api.optionedge.in
     - ASPNETCORE_ENVIRONMENT=Production
     - RuntimeSettings__ProfileApiBaseUrl=https://api.optionedge.in/
     - RuntimeSettings__MessageQueueConnectionString=host=rabbitmq_local:5672;virtualhost=/;username=guest;password=guest;persistentMessages=false
     - RuntimeSettings__DataFolder=/app/data
     - RuntimeSettings__UpgradeServiceUrl=http://upgrade_service:8080
     - RUNNING_IN_CONTAINER=true
    depends_on:
      - rabbitmq_local
    volumes:
      - ./data:/app/data
    networks:
        - optionedge_local

  upgrade_service:
    image: 'optionedge/upgrade-service:1.0.208'
    container_name: upgrade_service
    restart: always
    ports:
     - "127.0.0.1:9999:8080"
    environment:
     - TZ=Asia/Kolkata
     - ASPNETCORE_ENVIRONMENT=Production
    volumes:
       - ./:/app/optionedge
       - /var/run/docker.sock:/var/run/docker.sock
    networks:
        - optionedge_local
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
  
  rabbitmq_local:
    image: rabbitmq:4.0-management-alpine
    container_name: rabbitmq_local
    restart: always
    volumes:
        - ./.queue/queue/data/:/var/lib/rabbitmq/
        - ./.queue/queue/log/:/var/log/rabbitmq
    networks:
        - optionedge_local

  caddy:
    image: caddy:2-alpine
    container_name: caddy_proxy
    restart: always
    ports:
      - "7500:7500"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    depends_on:
      - engine_local
    networks:
      - optionedge_local

volumes:
  caddy_data:
  caddy_config:
  
networks:
  optionedge_local: