Skip to content

production-ready: ships infra manifests only — docker build . and docker compose up fail (no application code) #23

Description

@intech

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-serviceservices/ 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

  • docker build -t my-service . succeeds.
  • docker compose up starts order-service (:5000), inventory-service (:5001), and the full observability stack.
  • README instructions match the shipped files (no references to non-existent paths).

Metadata

Metadata

Assignees

No one assigned

    Labels

    status:triageNot yet reviewed by maintainertype:bugBug report: something is not working as documented

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions