services: api_server: build: context: api_server dockerfile: Dockerfile ports: - "18083:80" healthcheck: test: ["CMD", "curl" ,"http://localhost:80/healthz"] interval: 5s retries: 20 chatbot_ui: build: context: ../../chatbot_ui dockerfile: Dockerfile ports: - "18090:8080" environment: - OPENAI_API_KEY=${OPENAI_API_KEY:?error} - MISTRAL_API_KEY=${MISTRAL_API_KEY:?error} - CHAT_COMPLETION_ENDPOINT=http://host.docker.internal:10000/v1 opentelemetry: build: context: . dockerfile: Dockerfile-opentelemetry healthcheck: test: ["CMD-SHELL", "curl -sf http://localhost:13133 || exit 1"] interval: 1s timeout: 120s retries: 120 start_period: 5s command: ["--config=/etc/otel-collector-config.yaml"] ports: - "${PORT_UI:-55679}:55679" - "${PORT_GRPC:-4317}:4317" - "${PORT_HTTP:-4318}:4318" prometheus: image: prom/prometheus container_name: prometheus command: - '--config.file=/etc/prometheus/prometheus.yaml' ports: - 9090:9090 restart: unless-stopped volumes: - ./prometheus:/etc/prometheus - ./prom_data:/prometheus profiles: - monitoring grafana: image: grafana/grafana container_name: grafana ports: - 3000:3000 restart: unless-stopped environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=grafana volumes: - ./grafana:/etc/grafana/provisioning/datasources - ./grafana/dashboard.yaml:/etc/grafana/provisioning/dashboards/main.yaml - ./grafana/dashboards:/var/lib/grafana/dashboards profiles: - monitoring