version: '3.8' services: dynamodb: image: amazon/dynamodb-local command: -jar DynamoDBLocal.jar -inMemory -sharedDb ports: - '8000:8000' imds: image: amazon/amazon-ec2-metadata-mock:v1.5.0 ports: - '1338:1338' dynamodb-table: image: amazon/aws-cli entrypoint: bash # Wait a few seconds for dynamodb-local to start before creating command: | -c "curl --retry 10 --retry-delay 5 --retry-max-time 100 --retry-connrefused http://dynamodb:8000 > /dev/null && \ aws dynamodb create-table \ --table-name scratch \ --attribute-definitions AttributeName=id,AttributeType=S \ --key-schema AttributeName=id,KeyType=HASH \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ --endpoint-url http://dynamodb:8000" environment: - AWS_ACCESS_KEY_ID=dummy - AWS_SECRET_ACCESS_KEY=dummy - AWS_REGION=dummy depends_on: - dynamodb mysqldb: image: mysql:5.7 environment: # Don't ever use such a simple password in prod! This is only for local testing. MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: appdb ports: - '3306:3306' volumes: - ./scripts/db:/docker-entrypoint-initdb.d cats-cache: image: redis:6 ports: - '6379:6379' dogs-cache: image: redis:6 ports: - '6380:6379' jaeger-server: image: jaegertracing/all-in-one:latest ports: - "16686:16686" - "14268" - "14250" zipkin-server: image: openzipkin/zipkin-slim ports: - '9412:9411' otel: #build: # context: ../opentelemetry-collector-contrib # dockerfile: examples/tracing/Dockerfile image: otel/opentelemetry-collector-contrib-dev command: --config /config/collector-config.yml --log-level debug environment: - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_REGION=us-east-1 ports: - '4317:4317' - '55680:55680' volumes: - ./otel:/config - ~/.aws:/.aws depends_on: - zipkin-server - jaeger-server go-gorilla: image: public.ecr.aws/u0d6r4y4/aws-otel-go-test-gorilla:0 environment: - LISTEN_ADDRESS=0.0.0.0:8080 - OTEL_EXPORTER_OTLP_ENDPOINT=http://otel:4317 - OTEL_RESOURCE_ATTRIBUTES=service.name=go-gorilla backend: image: public.ecr.aws/o2z1k4j2/aws-otel-playground:backend environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://otel:4317 ports: - '8081:8081' - '8083:8083' depends_on: - imds - mysqldb - otel backend-webflux: image: public.ecr.aws/o2z1k4j2/aws-otel-playground:backend-webflux environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://otel:4317 - IMDS_ENDPOINT=imds:1338 - OTEL_AWS_IMDS_ENDPOINT_OVERRIDE=imds:1338 - CATS_CACHE_ENDPOINT=cats-cache:6379 - DOGS_CACHE_ENDPOINT=dogs-cache:6379 ports: - '8082:8082' depends_on: - imds - mysqldb - otel frontend: image: public.ecr.aws/o2z1k4j2/aws-otel-playground:frontend environment: - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_REGION=us-east-1 - HELLO_SERVICE_ENDPOINT=backend:8081 - WEBFLUX_BACKEND_ENDPOINT=backend-webflux:8082 - SPARK_BACKEND_ENDPOINT=backend:8083 - GO_GORILLA_BACKEND_ENDPOINT=go-gorilla:8080 - IMDS_ENDPOINT=imds:1338 - OTEL_EXPORTER_OTLP_ENDPOINT=http://otel:4317 - DYNAMODB_ENDPOINT=dynamodb:8000 - CATS_CACHE_ENDPOINT=cats-cache:6379 - DOGS_CACHE_ENDPOINT=dogs-cache:6379 - SPRING_DATASOURCE_URL=jdbc:mysql://mysqldb:3306/appdb - OTEL_AWS_IMDS_ENDPOINT_OVERRIDE=imds:1338 # AWS Provisioned resources - API_GATEWAY_ENDPOINT=https://a3iska8nwh.execute-api.us-east-1.amazonaws.com/default - ECS_ENDPOINT=ecs-backend-37231057.us-east-1.elb.amazonaws.com - EKS_ENDPOINT=2ccd810c-fargate-backend-8661-1530997741.us-east-1.elb.amazonaws.com - OTEL_ENDPOINT_PEER_SERVICE_MAPPING=a3iska8nwh.execute-api.us-east-1.amazonaws.com=hello-lambda-api,cats-cache:6379=cats-cache,dogs-cache:6379=dogs-cache,ecs-backend-37231057.us-east-1.elb.amazonaws.com=ecs-backend,2ccd810c-fargate-backend-8661-1530997741.us-east-1.elb.amazonaws.com=eks-backend ports: - '9080:9080' volumes: - ~/.aws:/root/.aws depends_on: - backend - dynamodb-table - imds - mysqldb - cats-cache - dogs-cache - otel