# Smart City Digital Twin Martinique — Main Docker Compose
# Usage: docker compose -p smart-city up -d
# This file defines the simulator and includes other services

version: '3.8'

networks:
  smartcity-shared:
    external: true
  traefik-public:
    external: true

services:
  # Smart City Simulator
  simulator:
    build: .
    container_name: smart-city-simulator
    networks:
      - smartcity-shared
      - traefik-public
    environment:
      # MQTT Brokers
      - ENABLE_EMQX=true
      - ENABLE_MOSQUITTO=true
      - ENABLE_BUNKER=true
      # Context Brokers
      - ENABLE_ORION=true
      - ENABLE_STELLIO=true
      - ENABLE_FROST=true
      # Databases
      - ENABLE_INFLUX=true
      - INFLUX_URL=http://smart-city-influxdb:8086
      # Pulsar (Disabled for demo stability - was causing 0.0.0.0:0 errors)
      - ENABLE_PULSAR=false
      # - PULSAR_HOST=smart-city-pulsar
      # - PULSAR_PORT=6650
      # Redpanda (Disabled - troubleshooting)
      - ENABLE_REDPANDA=false
      - REDPANDA_BROKERS=smart-city-redpanda:9092
      # Simulation settings
      - INTERVAL=1
      - LOG_LEVEL=INFO
    restart: unless-stopped
    labels:
      - "traefik.enable=false"

  # InfluxDB (defined in docker-compose.influxdb.yml)
  # Run with: docker compose -f docker-compose.yml -f docker-compose.influxdb.yml up -d

  # Grafana (defined in docker-compose.grafana.yml)
  # Run with: docker compose -f docker-compose.yml -f docker-compose.grafana.yml up -d

  # Pulsar (defined in pulsar/docker-compose.yml)
  # Run with: docker compose -f docker-compose.yml -f pulsar/docker-compose.yml up -d

  # Redpanda (defined in redpanda/docker-compose.yml)
  # Run with: docker compose -f docker-compose.yml -f redpanda/docker-compose.yml up -d
