version: "3.8" services: ray-head: image: rayproject/ray:2.9.0-py310 container_name: marl-ray-head command: > ray start --head --port=6379 --dashboard-host=0.0.0.0 --metrics-export-port=8080 --block ports: - "8265:8265" - "6379:6379" - "8080:8080" profiles: ["full"] networks: - marl-net ray-worker: image: rayproject/ray:2.9.0-py310 command: > ray start --address=ray-head:6379 --block depends_on: - ray-head deploy: replicas: 1 profiles: ["full"] networks: - marl-net prometheus: image: prom/prometheus:latest container_name: marl-prometheus volumes: - ./infra/prometheus.yml:/etc/prometheus/prometheus.yml:ro - ./infra/alert_rules.yml:/etc/prometheus/alert_rules.yml:ro ports: - "9090:9090" depends_on: - ray-head networks: - marl-net profiles: ["full"] grafana: image: grafana/grafana:latest container_name: marl-grafana volumes: - ./infra/grafana/provisioning:/etc/grafana/provisioning:ro - ./infra/grafana/dashboards:/var/lib/grafana/dashboards:ro environment: - GF_SECURITY_ADMIN_PASSWORD=admin - GF_AUTH_ANONYMOUS_ENABLED=true ports: - "3000:3000" depends_on: - prometheus networks: - marl-net profiles: ["full"] app: build: context: . dockerfile: Dockerfile target: base container_name: marl-app environment: - METRICS_PORT=9090 - RAY_ADDRESS=ray-head:6379 ports: - "9091:9090" depends_on: - ray-head networks: - marl-net profiles: ["full"] streamlit: build: context: . dockerfile: Dockerfile target: streamlit container_name: marl-streamlit command: streamlit run ui/app.py --server.port=8501 --server.address=0.0.0.0 --server.headless=true environment: - RAY_ADDRESS=ray-head:6379 ports: - "8501:8501" depends_on: - app networks: - marl-net profiles: ["full"] allinone: build: context: . dockerfile: Dockerfile target: allinone container_name: marl-allinone ports: - "8501:8501" - "3000:3000" - "9090:9090" - "9091:9091" volumes: - ./results:/app/results profiles: ["full"] game-core: build: context: . dockerfile: Dockerfile target: core container_name: marl-game-core environment: - METRICS_PORT=9090 ports: - "9091:9090" networks: - marl-net profiles: ["core"] streamlit-core: build: context: . dockerfile: Dockerfile target: streamlit container_name: marl-streamlit-core command: streamlit run ui/app.py --server.port=8501 --server.address=0.0.0.0 --server.headless=true ports: - "8501:8501" depends_on: - game-core networks: - marl-net profiles: ["core"] networks: marl-net: driver: bridge