services: postgres: image: postgres:latest command: -c 'max_connections=2000' environment: POSTGRES_USER: elsa POSTGRES_PASSWORD: elsa POSTGRES_DB: elsa volumes: - postgres-data:/var/lib/postgresql/data ports: - "5432:5432" rabbitmq: image: "rabbitmq:3-management" ports: - "15672:15672" - "5672:5672" redis: image: redis:latest ports: - "127.0.0.1:6379:6379" elsa-server: pull_policy: always build: context: ../. dockerfile: ./docker/ElsaServer-Datadog.Dockerfile depends_on: - postgres - rabbitmq - redis - otel-collector environment: DD_AGENT_HOST: datadog-agent DD_ENV: development DD_TRACE_DEBUG: true DD_TRACE_OTEL_ENABLED: true DD_SERVICE: "Elsa Server" DD_VERSION: "3.3.0" # OpenTelemetry environment variables OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel-collector:4317" # Point to OpenTelemetry Collector OTEL_EXPORTER_OTLP_PROTOCOL: "grpc" # Use gRPC for OTLP OTEL_TRACES_EXPORTER: "otlp" OTEL_METRICS_EXPORTER: "otlp" OTEL_LOGS_EXPORTER: "otpl" OTEL_RESOURCE_ATTRIBUTES: "service.name=elsa-server-local,service.version=3.2.1-blueberry,deployment.environment=development" OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES: "Elsa.Workflows" OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED: "true" OTEL_LOG_LEVEL: "debug" OTEL_DOTNET_AUTO_RESOURCE_DETECTOR_ENABLED: "true" OTEL_DOTNET_AUTO_LOGS_CONSOLE_EXPORTER_ENABLED: "true" OTEL_DOTNET_AUTO_METRICS_CONSOLE_EXPORTER_ENABLED: "true" OTEL_DOTNET_AUTO_TRACES_CONSOLE_EXPORTER_ENABLED: "true" ASPNETCORE_ENVIRONMENT: Development PYTHONNET_PYDLL: /opt/homebrew/Cellar/python@3.11/3.11.6_1/Frameworks/Python.framework/Versions/3.11/bin/python3.11 PYTHONNET_RUNTIME: coreclr CONNECTIONSTRINGS__POSTGRESQL: "Server=postgres;Username=elsa;Database=elsa;Port=5432;Password=elsa;SSLMode=Prefer" CONNECTIONSTRINGS__RABBITMQ: "amqp://guest:guest@rabbitmq:5672/" CONNECTIONSTRINGS__REDIS: "redis:6379" DISTRIBUTEDLOCKPROVIDER: "Postgres" ports: - "13000:8080" elsa-studio: pull_policy: always build: context: ../. dockerfile: ./docker/ElsaStudio.Dockerfile environment: ASPNETCORE_ENVIRONMENT: Development ELSASERVER__URL: "http://localhost:13000/elsa/api" ports: - "14000:8080" otel-collector: image: otel/opentelemetry-collector-contrib:latest volumes: - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml command: [ "--config", "/etc/otel-collector-config.yaml", "--feature-gates", "-component.UseLocalHostAsDefaultHost" ] environment: DD_API_KEY: "secret api key" DD_SITE: "datadoghq.eu" ports: - "13133:13133" - "4317:4317" - "4318:4318" datadog-agent: image: datadog/agent:latest environment: DD_API_KEY: "" DD_SITE: "datadoghq.eu" DD_HOSTNAME: "otel-collector" DD_LOGS_ENABLED: "true" DD_OTLP_CONFIG_LOGS_ENABLED: "true" DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL: "true" DD_APM_ENABLED: "true" DD_APM_NON_LOCAL_TRAFFIC: "true" DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT: 0.0.0.0:4317 # The Datadog Agent expects traces from OpenTelemetry Collector DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT: 0.0.0.0:4318 # Service autodiscovery DD_AC_INCLUDE: "name:postgres,name:rabbitmq,name:redis,name:elsa-server" DD_AC_EXCLUDE: "name:datadog-agent" ports: - "8126:8126" - "14317:4317" - "14318:4318" volumes: postgres-data: