Phase 1e — Ops & Containers #6
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Reference
marvin8/xique#6
Loading…
Reference in a new issue
No description provided.
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?
Xique needs to run as a deployable service rather than a dev checkout.
This issue adds the Containerfile, the two container entry points (web and worker) sharing one sqlite volume, rootless podman deployment, WAL checkpointing and backup guidance, and the operator documentation.
Scope confirmed container-only: the WAL/backup guidance and operator docs moved to #16.
Findings from design:
container/publish-containerCI jobs already encode the image contract (buildah chroot on zhuiri,/app/src+PYTHONPATH, venv metadata,container-entrypoint.sh web,PORT). The Containerfile implements that contract rather than inventing a new one.server.pycurrently calls bareuvicorn.run()(loopback, port 8000) — needsXIQUE_HOST/XIQUE_PORTsettings so the in-pod proxy path works./data/dbwith no secret. Amendment (within the job, contract intact): boot worker once first (production first-boot order), throwawayXIQUE_SECRET_KEYin CI env only.database_pathdefault moves/data/xique.db→/data/db/xique.db.Plan of attack:
XIQUE_HOST(default127.0.0.1),XIQUE_PORT(default 8000, validated),database_pathdefault move;server.pybinds via settings; README table synced.Containerfile(python:3.14-slim, uv pinned to the CI-parsed floor,uv sync --frozen --no-dev, non-root appuser uid 1000, pre-created/data/db+/data/imports-temp, OCI revision label, tag-baked version for releases),container-entrypoint.sh(web/worker subcommands,PORT→XIQUE_PORT, host default0.0.0.0),.containerignore.container+publish-containerjobs; amended smoke (worker→web with CI-only secret).deploy-docsstays off (#16).deploy/quadlets:xique.pod(web + worker + tailscale sidecar, shared netns), web/worker mounts~/docker/xique/data/db→/data/dbplus named volumexique-imports-volume→/data/imports-temp, env viaEnvironmentFile,XIQUE_TRUSTED_PROXIES=127.0.0.1(serve proxies over pod loopback); tailscale quadlet mirrors the operator's proven changedetection shape (interactive login,TS_HOSTNAME=xique, serve JSON proxying 443 →127.0.0.1:8000, funnel off).Branch
feat/issue-6-phase-1e-ops-containers, PR intomainwhen the work is done.