version: "3.8" services: api: build: context: . dockerfile: Dockerfile ports: - "8080:8080" environment: - AGENTSPAN_SERVER__HOST=0.0.0.0 - AGENTSPAN_SERVER__PORT=8080 - AGENTSPAN_CACHE__L3_URL=redis://redis:6379 - RUST_LOG=info restart: unless-stopped healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:8080/health"] interval: 30s timeout: 5s retries: 3 start_period: 10s depends_on: - redis - postgres networks: - agentspan ui: build: context: ./web dockerfile: Dockerfile ports: - "3000:80" depends_on: - api restart: unless-stopped networks: - agentspan redis: image: redis:7-alpine ports: - "6379:6379" networks: - agentspan postgres: image: postgres:16-alpine environment: POSTGRES_USER: agentspan POSTGRES_PASSWORD: agentspan POSTGRES_DB: agentspan ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data networks: - agentspan prometheus: image: prom/prometheus:latest ports: - "9090:9090" volumes: - ./scripts/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro - prometheus_data:/prometheus command: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.path=/prometheus" - "--web.console.libraries=/etc/prometheus/console_libraries" - "--web.console.templates=/etc/prometheus/consoles" - "--web.enable-lifecycle" depends_on: - api restart: unless-stopped networks: - agentspan grafana: image: grafana/grafana:latest ports: - "3001:3000" environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin - GF_USERS_ALLOW_SIGN_UP=false volumes: - ./scripts/grafana/provisioning:/etc/grafana/provisioning:ro - ./scripts/grafana/dashboards:/var/lib/grafana/dashboards:ro - grafana_data:/var/lib/grafana depends_on: - prometheus restart: unless-stopped networks: - agentspan networks: agentspan: driver: bridge volumes: postgres_data: prometheus_data: grafana_data: