x-shared-config: base: &base command: /bin/bash image: opentelemetry/opentelemetry-ruby-contrib stdin_open: true tmpfs: - /tmp tty: true user: "1000:1000" volumes: - .:/app:cached - bundle:/bundle services: app: <<: *base build: context: . working_dir: /app environment: - MEMCACHED_URL=memcached:11211 - TEST_MYSQL_USER=root - TEST_MYSQL_ROOT_PASSWORD=root - TEST_MYSQL_HOST=mysql - TEST_MYSQL_PORT=3306 - TEST_MYSQ_DB=mysql - TEST_POSTGRES_PASSWORD=postgres - TEST_POSTGRES_USER=postgres - TEST_POSTGRES_HOST=postgres - TEST_POSTGRES_PORT=5432 - TEST_POSTGRES_DB=postgres depends_on: - kafka - jaeger - mysql - mongo - memcached - otelcol - postgres - rabbitmq - redis ex-instrumentation-bunny: <<: *base depends_on: - rabbitmq environment: - RABBITMQ_URL=amqp://guest:guest@rabbitmq:5672 working_dir: /app/instrumentation/bunny/example ex-instrumentation-concurrent-ruby: <<: *base working_dir: /app/instrumentation/concurrent_ruby/example ex-instrumentation-delayed_job: <<: *base working_dir: /app/instrumentation/delayed_job/example ex-instrumentation-ethon: <<: *base working_dir: /app/instrumentation/ethon/example ex-instrumentation-excon: <<: *base working_dir: /app/instrumentation/excon/example ex-instrumentation-faraday: <<: *base working_dir: /app/instrumentation/faraday/example ex-instrumentation-mysql2: <<: *base environment: - TEST_MYSQL_USER=root - TEST_MYSQL_ROOT_PASSWORD=root - TEST_MYSQL_HOST=mysql - TEST_MYSQL_PORT=3306 - TEST_MYSQ_DB=mysql depends_on: - mysql working_dir: /app/instrumentation/mysql2/example ex-instrumentation-mysql2-test: <<: *base environment: - TEST_MYSQL_USER=root - TEST_MYSQL_ROOT_PASSWORD=root - TEST_MYSQL_HOST=mysql - TEST_MYSQL_PORT=3306 - TEST_MYSQ_DB=mysql depends_on: - mysql working_dir: /app/instrumentation/mysql2/ ex-instrumentation-pg: <<: *base environment: - TEST_POSTGRES_PASSWORD=postgres - TEST_POSTGRES_USER=postgres - TEST_POSTGRES_HOST=postgres - TEST_POSTGRES_PORT=5432 - TEST_POSTGRES_DB=postgres - OTEL_TRACES_EXPORTER=console depends_on: - postgres working_dir: /app/instrumentation/pg/example ex-instrumentation-pg-test: <<: *base environment: - TEST_POSTGRES_PASSWORD=postgres - TEST_POSTGRES_USER=postgres - TEST_POSTGRES_HOST=postgres - TEST_POSTGRES_PORT=5432 - TEST_POSTGRES_DB=postgres depends_on: - postgres tmpfs: [] working_dir: /app/instrumentation/pg/ volumes: - .:/app:cached - bundle:/bundle - postgres_socket:/tmp - postgres_socket:/var/run/postgresql ex-instrumentation-net-http: <<: *base working_dir: /app/instrumentation/net_http/example ex-instrumentation-que: <<: *base environment: - TEST_POSTGRES_PASSWORD=postgres - TEST_POSTGRES_USER=postgres - TEST_POSTGRES_HOST=postgres - TEST_POSTGRES_PORT=5432 - TEST_POSTGRES_DB=postgres depends_on: - postgres working_dir: /app/instrumentation/que ex-instrumentation-rack: <<: *base working_dir: /app/instrumentation/rack/example ex-instrumentation-dalli: <<: *base environment: - MEMCACHED_URL=memcached:11211 depends_on: - memcached working_dir: /app/instrumentation/dalli/example ex-instrumentation-restclient: <<: *base working_dir: /app/instrumentation/restclient/example ex-instrumentation-sinatra: <<: *base command: ./start_server.sh working_dir: /app/instrumentation/sinatra/example processor-baggage-test: <<: *base working_dir: /app/processor/baggage command: | bash -c "bundle install && rake" mongo: image: mongo:4.4 expose: - "27017" ports: - "27017:27017" mysql: image: mysql:8.0.31 command: mysqld --default-authentication-plugin=mysql_native_password environment: - MYSQL_DATABASE=mysql - MYSQL_ROOT_PASSWORD=root - MYSQL_PASSWORD=mysql - MYSQL_USER=mysql expose: - "3306" ports: - "3306:3306" postgres: image: postgres:13 environment: - POSTGRES_PASSWORD=postgres expose: - "5432" ports: - "5432:5432" volumes: - postgres_socket:/var/run/postgresql redis: image: redis:6.2 environment: - REDIS_PASSWORD=passw0rd volumes: - redis_data:/data ports: - "16379:6379" command: ["redis-server", "--appendonly", "yes", "--requirepass", "${REDIS_PASSWORD}"] options: >- --health-cmd "sh -c 'redis-cli -a \"$REDIS_PASSWORD\" ping | grep PONG'" --health-interval 10s --health-timeout 5s --health-retries 5 rabbitmq: image: rabbitmq:3.8-alpine ports: - "5672:5672" memcached: image: memcached:alpine command: memcached -m 64 ports: - "11211:11211" zookeeper: image: confluentinc/cp-zookeeper:latest ports: - 2181:2181 environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 kafka: image: confluentinc/cp-kafka:7.9.1 ports: - "9092:9092" - "29092:29092" environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:29092,PLAINTEXT_HOST://kafka:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 depends_on: - zookeeper jaeger: image: jaegertracing/all-in-one ports: - "16686:16686" otelcol: image: otel/opentelemetry-collector:0.109.0 command: ["--config=/etc/otelcol-config.yml"] volumes: - ./otelcol-config.yml:/etc/otelcol-config.yml ports: - "4317:4317" - "4318:4318" depends_on: - jaeger volumes: bundle: redis_data: postgres_socket: