Summary
The production-ready example presents itself as runnable (the README documents docker build -t my-service . and docker compose up), but it ships only infrastructure manifests — there is no application code. Both documented commands fail.
What's present vs. missing
Present: Dockerfile, Dockerfile.alpine, docker-compose.yml, otel-collector-config.yaml, k8s/, istio/, envoy-gateway/.
Missing (referenced but absent):
Dockerfile runs COPY src/ ./src/ and COPY gen/ ./gen/ — neither src/ nor gen/ exists.
docker-compose.yml builds order-service from ./services/order-service and inventory-service from ./services/inventory-service — services/ does not exist.
docker-compose.yml mounts ./prometheus.yml into the Prometheus container — prometheus.yml does not exist.
Reproduction
cd production-ready
docker build -t my-service . # fails: COPY src/ ./src/ — no such file or directory
docker compose up # fails: build context ./services/order-service not found
Impact
A reader following the README cannot run the example as documented. This has been the case since 1.0.0-beta.3 (the example has not changed since initial release).
Proposed resolution
Scaffold the two services the manifests already expect, so the example runs exactly as documented:
services/order-service/ and services/inventory-service/ — minimal Connectum services (proto + gen/ + src/index.ts), each with its own Dockerfile, wired to the OTel Collector via the existing env vars.
prometheus.yml — scrape config for the OTel Collector's Prometheus endpoint (:8889).
- Verify
docker compose up brings up both services + Jaeger + Prometheus + Grafana, and that /healthz health checks pass.
The k8s / istio / envoy manifests can keep referencing a single built image.
Acceptance criteria
Summary
The
production-readyexample presents itself as runnable (the README documentsdocker build -t my-service .anddocker compose up), but it ships only infrastructure manifests — there is no application code. Both documented commands fail.What's present vs. missing
Present:
Dockerfile,Dockerfile.alpine,docker-compose.yml,otel-collector-config.yaml,k8s/,istio/,envoy-gateway/.Missing (referenced but absent):
DockerfilerunsCOPY src/ ./src/andCOPY gen/ ./gen/— neithersrc/norgen/exists.docker-compose.ymlbuildsorder-servicefrom./services/order-serviceandinventory-servicefrom./services/inventory-service—services/does not exist.docker-compose.ymlmounts./prometheus.ymlinto the Prometheus container —prometheus.ymldoes not exist.Reproduction
Impact
A reader following the README cannot run the example as documented. This has been the case since
1.0.0-beta.3(the example has not changed since initial release).Proposed resolution
Scaffold the two services the manifests already expect, so the example runs exactly as documented:
services/order-service/andservices/inventory-service/— minimal Connectum services (proto +gen/+src/index.ts), each with its ownDockerfile, wired to the OTel Collector via the existing env vars.prometheus.yml— scrape config for the OTel Collector's Prometheus endpoint (:8889).docker compose upbrings up both services + Jaeger + Prometheus + Grafana, and that/healthzhealth checks pass.The k8s / istio / envoy manifests can keep referencing a single built image.
Acceptance criteria
docker build -t my-service .succeeds.docker compose upstarts order-service (:5000), inventory-service (:5001), and the full observability stack.