ADR 0015: Container image

Ratification

Adopted before ADR 0018. There was no separate ratification process. Git history for this file on main is the record.

Context

Why this matters: Local Python (make run) is the fastest feedback loop for feature work. Containers add a packaging boundary: the same bits you test in CI can run on a laptop, in a VM, or on a cloud host behind a registry.

Docker stays optional for daily coding; it complements the venv workflow. We ship a Dockerfile so integration tests and release flows do not depend on a specific cloud account.

Decision

Scope

Alternatives considered

  1. docker-compose for the API
    • Pros: simple multi-container dev.
    • Cons: observability compose already exists separately; a single Dockerfile keeps one path for portable runs.
  2. Init container for migrations, app container without Alembic
    • Pros: clearer separation in some platforms.
    • Cons: duplicate image configuration for standalone docker run; entrypoint migration keeps one path for local and registry pulls.

Consequences

Positive

Trade-offs

Compatibility and migration

Implementation plan

  1. Add Dockerfile, scripts/container_entrypoint.sh, .dockerignore.
  2. Document in developer guide and this ADR; link from ADR index.

Validation

References

Page history

Date Change Author
Added Page history section (repository baseline). Ivan Boyarkin