services:
  datadog-agent:
    image: datadog/agent:7
    platform: linux/amd64
    container_name: dx-ui-datadog-agent
    ports:
      - "8126:8126"  # APM trace agent
      - "8125:8125/udp"  # DogStatsD
    environment:
      # For local testing without sending data to Datadog
      - DD_API_KEY=${DD_API_KEY}
      - DD_APM_ENABLED=true
      - DD_APM_NON_LOCAL_TRAFFIC=true
      - DD_LOGS_ENABLED=false
      - DD_PROCESS_AGENT_ENABLED=false
      - DD_SITE=datadoghq.com
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /proc/:/host/proc/:ro
      - /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
    networks:
      - dx-network
    restart: unless-stopped

  dx-ui:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        AWS_ACCOUNT: "086679231553"
        NEXUS_USERNAME: ${NEXUS_USERNAME}
        NEXUS_PASSWORD: ${NEXUS_PASSWORD}
    platform: linux/amd64
    image: dx-ui:0.0.1-SNAPSHOT
    container_name: dx-ui
    ports:
      - "4200:8080"
    environment:
      - NODE_ENV=production
      # Datadog RUM runtime configuration (rendered into runtime-config.js)
      - DD_RUM_ENABLED=${DD_RUM_ENABLED:-true}
      - DD_RUM_APPLICATION_ID=${DD_RUM_APPLICATION_ID}
      - DD_RUM_CLIENT_TOKEN=${DD_RUM_CLIENT_TOKEN}
      - DD_RUM_SITE=${DD_RUM_SITE:-datadoghq.com}
      - DD_RUM_SERVICE=${DD_RUM_SERVICE:-dx-ui}
      - DD_RUM_ENV=${DD_RUM_ENV:-local}
      - DD_RUM_VERSION=${DD_RUM_VERSION:-0.0.1-SNAPSHOT}
      - DD_RUM_SESSION_SAMPLE_RATE=${DD_RUM_SESSION_SAMPLE_RATE:-100}
      - DD_RUM_SESSION_REPLAY_SAMPLE_RATE=${DD_RUM_SESSION_REPLAY_SAMPLE_RATE:-100}
      - DD_RUM_TRACK_USER_INTERACTIONS=${DD_RUM_TRACK_USER_INTERACTIONS:-true}
      - DD_RUM_TRACK_RESOURCES=${DD_RUM_TRACK_RESOURCES:-true}
      - DD_RUM_TRACK_LONG_TASKS=${DD_RUM_TRACK_LONG_TASKS:-true}
      - DD_RUM_DEFAULT_PRIVACY_LEVEL=${DD_RUM_DEFAULT_PRIVACY_LEVEL:-mask-user-input}
    healthcheck:
      test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1:8080/health"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 20s
    restart: unless-stopped
    depends_on:
      - datadog-agent
    networks:
      - dx-network

networks:
  dx-network:
    driver: bridge
