feat(deploy): add the production container image
Add deploy/Dockerfile and .dockerignore (ADR 0044): one image for the api service and every operator-run CLI, built from an already-assembled workspace (the platform plus whatever modules/<id> the context holds). - node:24.18.0-trixie-slim pinned by index digest; pnpm via Corepack at the root packageManager version. - Build stage: frozen install, modules:validate, migrations:validate, build. Runtime: production-only node_modules plus every dist/, core migrations, and each module directory, in the repository layout the API and CLIs resolve paths from; root-owned, run as node. - NODE_ENV=production and EKKLESIA_API_HOST=0.0.0.0 inside the image only; the platform default stays 127.0.0.1. Configuration comes only from the environment; no .env enters the context or any layer. - HEALTHCHECK on /api/v1/health/ready with Node's fetch; OCI labels for source, revision, and version. - CI builds the image without modules: build only, no credentials, no push. - deploy/README.md documents the image, the read-only production posture (verified), init: true, and the exact CLI commands. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
ef1383d080
commit
756e9b821c
@@ -464,9 +464,11 @@ Until that exists, the trusted-code model above is the security model.
|
||||
## Current deployment state
|
||||
|
||||
As of this branch, **Ekklesia is not deployed**. There is no production API instance, no reverse
|
||||
proxy, no public listener, and no deployment automation of any kind in this repository — no deploy
|
||||
script, no CI deployment step, no container publish, no orchestration manifest. No `.env` has ever
|
||||
been committed; only `.env.example`.
|
||||
proxy, no public listener, and no deployment automation in this repository — no deploy script, no
|
||||
CI deployment step, no container publish, no orchestration manifest. The repository can **build** a
|
||||
production image ([`deploy/`](../../deploy/README.md)), and CI builds it without modules on every
|
||||
change, but nothing pushes, publishes, or runs it anywhere. No `.env` has ever been committed; only
|
||||
`.env.example`, which the image build context excludes.
|
||||
|
||||
Two production defaults are relevant but are **not** by themselves a deployment guarantee:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user