Local Docker Compose
Target reader: developers running echo-nebula dependencies and APIs on a local machine.
The infra repository owns local orchestration. dev-up.sh starts PostgreSQL and MinIO. dev-apps-up.sh starts those dependencies plus both Go APIs, the Developer Console, and the docs site for Alpha E2E.
Minimal example
cd ../echo-nebula-infra
./scripts/dev-apps-up.sh
./scripts/wait-for-services.sh
./scripts/e2e-all.sh
Default ports are PostgreSQL 5432, MinIO API 9000, MinIO console 9001, public API 4000, admin API 4100, Developer Console 4173, and docs 4200. Every published service binds to 127.0.0.1 by default.
Mailpit uses SMTP 1025 and capture UI 8025.
Published host boundaries
COMPOSE_BIND_IP changes the shared bind address. The service-specific overrides are POSTGRES_PORT, MINIO_PORT, MINIO_CONSOLE_PORT, PUBLIC_API_PORT, ADMIN_API_PORT, CONSOLE_PORT, DOCS_PORT, MAILPIT_SMTP_PORT, and MAILPIT_HTTP_PORT.
If the MinIO or Console port changes, keep S3_PUBLIC_ENDPOINT aligned with the browser-visible MinIO endpoint and ADMIN_CORS_ALLOWED_ORIGINS aligned with the exact Console origin. A different scheme, host, or port is a different browser origin.
Readiness fault matrix
/healthz checks process liveness; /readyz checks dependencies. The normal full-stack gates require both API component statuses to be ready, even though Admin can remain 200 degraded during an object-storage-only outage.
Run the destructive recovery matrix only through its isolated entry point:
./scripts/e2e-readiness-isolated.sh
It creates a uniquely named Compose project with independent ports and volumes, tests PostgreSQL, MinIO, and combined outages plus recovery without API restarts, writes evidence below reports/readiness/, and removes only that isolated project. It never runs lifecycle commands against the default local project.
Common mistakes
- Do not put application code into the infra repository; it is only local orchestration.
- Do not start smoke scripts before the matching backend process is running.
- Do not reuse a production S3 bucket or database for local Alpha testing.
- Do not use
dev-up.shwhen you expect the APIs and web apps; it starts dependencies only. - Do not run manual dependency-stop tests against the default Compose project; use
e2e-readiness-isolated.sh. - Do not change a published Console or MinIO port without updating its corresponding CORS or public endpoint setting.
Next step
Call the Public API.