open-telemetry / opentelemetry-demo

This repository contains the OpenTelemetry Astronomy Shop, a microservice-based distributed system intended to illustrate the implementation of OpenTelemetry in a near real-world environment.
https://opentelemetry.io/docs/demo/
Apache License 2.0
1.71k stars 1.08k forks source link

Demo App fails to start on macOS M1, Docker Desktop #1660

Closed mviitane closed 2 months ago

mviitane commented 2 months ago

Bug Report

Which version of the demo you are using?

main/latest commit 9dad087f25b4629e3e00dce3c6b7cf75e133beff (HEAD -> main, upstream/main)

Also tried #1651 commit 8a1d4056cd4e0c1b2d5b0b8dd52bdb57d899ab5f (HEAD -> chore.multi-platform-builds)

Symptom

frontend, frontendproxy, paymentservice, and quoteservice fail to start.

The problem occurs in my macOS M1 with the latest Docker Desktop. Everything works fine on Ubuntu with x64.

What is the expected behavior?

All services start.

Reproduce

docker system prune -a
docker compose build
docker compose up

Additional Context

$ docker compose ps
NAME                      IMAGE                                                      COMMAND                  SERVICE                 CREATED         STATUS                          PORTS
accounting-service        ghcr.io/open-telemetry/demo:latest-accountingservice       "./instrument.sh dot…"   accountingservice       3 minutes ago   Up 3 minutes                    
ad-service                ghcr.io/open-telemetry/demo:latest-adservice               "./build/install/ope…"   adservice               3 minutes ago   Up 3 minutes                    0.0.0.0:53565->9555/tcp
cart-service              ghcr.io/open-telemetry/demo:latest-cartservice             "./cartservice"          cartservice             3 minutes ago   Up 3 minutes                    0.0.0.0:53572->7070/tcp
checkout-service          ghcr.io/open-telemetry/demo:latest-checkoutservice         "./checkoutservice"      checkoutservice         3 minutes ago   Up 3 minutes                    0.0.0.0:53598->5050/tcp
currency-service          ghcr.io/open-telemetry/demo:latest-currencyservice         "/bin/sh -c './usr/l…"   currencyservice         3 minutes ago   Up 3 minutes                    0.0.0.0:53570->7001/tcp
email-service             ghcr.io/open-telemetry/demo:latest-emailservice            "bundle exec ruby em…"   emailservice            3 minutes ago   Up 3 minutes                    0.0.0.0:53568->6060/tcp
flagd                     ghcr.io/open-feature/flagd:v0.10.2                         "/flagd-build start …"   flagd                   3 minutes ago   Up 3 minutes                    0.0.0.0:53558->8013/tcp
frauddetection-service    ghcr.io/open-telemetry/demo:latest-frauddetectionservice   "java -jar frauddete…"   frauddetectionservice   3 minutes ago   Up 3 minutes                    
frontend                  ghcr.io/open-telemetry/demo:latest-frontend                "/bin/sh -c 'npm sta…"   frontend                3 minutes ago   Restarting (1) 22 seconds ago   
frontend-proxy            ghcr.io/open-telemetry/demo:latest-frontendproxy           "/bin/sh -c 'envsubs…"   frontendproxy           3 minutes ago   Restarting (2) 24 seconds ago   
grafana                   grafana/grafana:10.4.3                                     "/run.sh"                grafana                 3 minutes ago   Up 3 minutes                    0.0.0.0:53561->3000/tcp
imageprovider             ghcr.io/open-telemetry/demo:latest-imageprovider           "/docker-entrypoint.…"   imageprovider           3 minutes ago   Up 3 minutes                    80/tcp, 0.0.0.0:53574->8081/tcp
jaeger                    jaegertracing/all-in-one:1.57                              "/go/bin/all-in-one-…"   jaeger                  3 minutes ago   Up 3 minutes                    4318/tcp, 5775/udp, 5778/tcp, 9411/tcp, 14250/tcp, 14268/tcp, 6831-6832/udp, 0.0.0.0:53559->4317/tcp, 0.0.0.0:53560->16686/tcp
kafka                     ghcr.io/open-telemetry/demo:latest-kafka                   "/__cacert_entrypoin…"   kafka                   3 minutes ago   Up 3 minutes (healthy)          9092/tcp
load-generator            ghcr.io/open-telemetry/demo:latest-loadgenerator           "/bin/sh -c 'locust …"   loadgenerator           3 minutes ago   Up 3 minutes                    0.0.0.0:53600->8089/tcp
opensearch                opensearchproject/opensearch:2.14.0                        "./opensearch-docker…"   opensearch              3 minutes ago   Up 3 minutes                    9300/tcp, 9600/tcp, 9650/tcp, 0.0.0.0:53556->9200/tcp
otel-col                  otel/opentelemetry-collector-contrib:0.102.1               "/otelcol-contrib --…"   otelcol                 3 minutes ago   Up 3 minutes                    55678-55679/tcp, 0.0.0.0:53562->4317/tcp, 0.0.0.0:53563->4318/tcp
payment-service           ghcr.io/open-telemetry/demo:latest-paymentservice          "npm run start"          paymentservice          3 minutes ago   Restarting (1) 35 seconds ago   
product-catalog-service   ghcr.io/open-telemetry/demo:latest-productcatalogservice   "./productcatalogser…"   productcatalogservice   3 minutes ago   Up 3 minutes                    0.0.0.0:53566->3550/tcp
prometheus                quay.io/prometheus/prometheus:v2.52.0                      "/bin/prometheus --w…"   prometheus              3 minutes ago   Up 3 minutes                    0.0.0.0:9090->9090/tcp
quote-service             ghcr.io/open-telemetry/demo:latest-quoteservice            "docker-php-entrypoi…"   quoteservice            3 minutes ago   Restarting (1) 39 seconds ago   
recommendation-service    ghcr.io/open-telemetry/demo:latest-recommendationservice   "opentelemetry-instr…"   recommendationservice   3 minutes ago   Up 3 minutes                    0.0.0.0:53573->9001/tcp
shipping-service          ghcr.io/open-telemetry/demo:latest-shippingservice         "/app/shippingservice"   shippingservice         3 minutes ago   Up 3 minutes                    0.0.0.0:53569->50050/tcp
valkey-cart               valkey/valkey:7.2-alpine                                   "docker-entrypoint.s…"   valkey-cart             3 minutes ago   Up 3 minutes                    0.0.0.0:53557->6379/tcp

$ docker compose logs frontend
frontend  | 
frontend  | > frontend@0.1.0 start
frontend  | > node --require ./Instrumentation.js server.js
frontend  | 
frontend  | node:internal/fs/utils:356
frontend  |     throw err;
frontend  |     ^
frontend  | 
frontend  | Error: EACCES: permission denied, open '/app/Instrumentation.js'
frontend  |     at Object.openSync (node:fs:596:3)
frontend  |     at Object.readFileSync (node:fs:464:35)
frontend  |     at Module._extensions..js (node:internal/modules/cjs/loader:1385:18)
frontend  |     at Module.load (node:internal/modules/cjs/loader:1203:32)
frontend  |     at Module._load (node:internal/modules/cjs/loader:1019:12)
frontend  |     at internalRequire (node:internal/modules/cjs/loader:174:19)
frontend  |     at Module._preloadModules (node:internal/modules/cjs/loader:1569:5)
frontend  |     at loadPreloadModules (node:internal/process/pre_execution:628:5)
frontend  |     at setupUserModules (node:internal/process/pre_execution:154:3)
frontend  |     at prepareExecution (node:internal/process/pre_execution:114:5) {
frontend  |   errno: -13,
frontend  |   syscall: 'open',
frontend  |   code: 'EACCES',
frontend  |   path: '/app/Instrumentation.js'
frontend  | }

$ docker compose logs quoteservice
quote-service  | Could not open input file: public/index.php
quote-service  | Could not open input file: public/index.php
quote-service  | Could not open input file: public/index.php
julianocosta89 commented 2 months ago

Hey @mviitane, I've just tested and everything is actually working:

❯ docker compose logs frontend
frontend  | 
frontend  | > frontend@0.1.0 start
frontend  | > node --require ./Instrumentation.js server.js
frontend  | 
frontend  |   ▲ Next.js 13.5.1
frontend  |   - Local:        http://d61ec2e1ba4d:8080
frontend  |   - Network:      http://172.18.0.23:8080
frontend  | 
frontend  |  ✓ Ready in 202ms
❯ docker compose logs quoteservice
quote-service  | Listening on: 0.0.0.0:8090
quote-service  | [2024-07-08 07:55:00+00:00] "POST /getquote HTTP/1.1" 200 5 
quote-service  | [2024-07-08 07:55:23+00:00] "POST /getquote HTTP/1.1" 200 3 
quote-service  | [2024-07-08 07:55:35+00:00] "POST /getquote HTTP/1.1" 200 5 
quote-service  | [2024-07-08 07:56:08+00:00] "POST /getquote HTTP/1.1" 200 6 
quote-service  | [2024-07-08 07:56:10+00:00] "POST /getquote HTTP/1.1" 200 3 
quote-service  | [2024-07-08 07:56:35+00:00] "POST /getquote HTTP/1.1" 200 5
julianocosta89 commented 2 months ago

Any chance you have something going on with your branch?

mviitane commented 2 months ago

Thanks for testing this! Then it must be something in my environment. I only have changes in otelcol-config-extras.yml, but maybe there's something else.