US08-02 — Build a Reproducible Application Image #88
Notifications
Due Date
No due date set.
Blocks
Depends on
#89 US08-03 — Compose the Runtime and Mount the Library Safely
domverse/photoanalyzer
#90 US08-04 — Publish and Deploy from Gitea Actions
domverse/photoanalyzer
#91 US08-05 — Automate Container Deployment Acceptance
domverse/photoanalyzer
#42 US07-05 — Deliver Backup and Operational Recovery
domverse/photoanalyzer
Reference: domverse/photoanalyzer#88
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Source specification: delivery_backlog/stories/US08-02-container-image.md
US08-02 — Build a Reproducible Application Image
Epic: E08
As an operator, I want one image that can run either application role, so deployment is
a pull instead of a Python environment I have to reproduce by hand.
Context
The application shells out to
exiftoolandimmich-go, writes into the library as anormal filesystem user, and serves a static frontend from
frontend/. All three have tobe true inside the image, or the container starts and then fails on the first real
operation.
Acceptance criteria
Dockerfilebuilds from a pinned Python base, installs the project and its runtimedependencies, and contains no test, playwright, or build-only tooling in the final
layer.
exiftoolandimmich-goare present at pinned versions, and their versions arerecorded in the image and reported by
python -m photo_pipeline diagnostics.the application renames or writes keep the ownership the host library expects.
serveorworker, passing through the existingCLI arguments; no supervisor runs two roles in one container.
servecontainers declare aHEALTHCHECKagainst/api/v1/health/ready, so anunmigrated or misconfigured database is not reported healthy.
.git; the buildcontext is constrained by
.dockerignore.README.md.Automated tests
index, and returns the pinned
exiftoolandimmich-goversions.container is owned by the configured UID/GID.
Dependencies
Claimed for implementation on branch
us/US08-02-build-a-reproducible-application-image.Submitted for review: #97
Tests passed:
work_item/scripts/python -m unittest discover -s work_item/tests -vwork_item/scripts/python -m pytest tests -qwork_item/scripts/python -m pytest tests/integration/test_container_image.py tests/e2e/test_container_runtime.py -qCompleted and merged via PR #97.