本地 Docker Compose
目标读者:需要在本机运行 echo-nebula 依赖和 API 的开发者。
infra 仓库负责本地编排。dev-up.sh 会启动 PostgreSQL 和 MinIO。dev-apps-up.sh 会启动这些依赖,以及两个 Go API、Developer Console 和 docs 站点,用于 Alpha E2E。
最小示例
cd ../echo-nebula-infra
./scripts/dev-apps-up.sh
./scripts/wait-for-services.sh
./scripts/e2e-all.sh
默认端口:PostgreSQL 5432,MinIO API 9000,MinIO console 9001,public API 4000,admin API 4100,Developer Console 4173,docs 4200。所有对外发布的服务默认绑定 127.0.0.1。
Mailpit 使用 SMTP 1025 和邮件捕获界面 8025。
主机发布边界
COMPOSE_BIND_IP 修改统一绑定地址。各服务端口可分别通过 POSTGRES_PORT、MINIO_PORT、MINIO_CONSOLE_PORT、PUBLIC_API_PORT、ADMIN_API_PORT、CONSOLE_PORT DOCS_PORT、MAILPIT_SMTP_PORT 和 MAILPIT_HTTP_PORT 覆盖。
修改 MinIO 或 Console 端口时,应让 S3_PUBLIC_ENDPOINT 与浏览器可访问的 MinIO 端点一致,并让 ADMIN_CORS_ALLOWED_ORIGINS 与 Console 的 exact origin 一致。scheme、host 或 port 任一变化都会形成不同的浏览器 Origin。
就绪故障矩阵
/healthz 检查进程存活,/readyz 检查依赖。正常完整栈门禁要求两个 API 的组件状态都为 ready;即使对象存储单独故障时 Admin 仍可返回 200 degraded,也不会把它当作完整栈已就绪。
破坏性恢复测试只能通过隔离入口运行:
./scripts/e2e-readiness-isolated.sh
脚本使用独立端口和 volume 创建唯一命名的 Compose project,注入 PostgreSQL、MinIO 和组合故障,验证两个 API 无需重启即可恢复,把证据写入 reports/readiness/,并且只清理自己的隔离 project。它不会对默认本地 project 执行 lifecycle 命令。
常见错误
- 不要把应用代码放进 infra 仓库;它只负责本地编排。
- 不要在对应后端进程未启动前运行 smoke 脚本。
- 不要把生产 S3 bucket 或数据库用于本地 Alpha 测试。
- 如果希望启动 API 和 Web 应用,不要使用只启动依赖的
dev-up.sh。 - 不要在默认 Compose project 上手工停依赖做故障测试;使用
e2e-readiness-isolated.sh。 - 修改 Console 或 MinIO 发布端口时,不要遗漏对应的 CORS 或 public endpoint 配置。
下一步
调用 Public API。