Registry Server Images
Ouroboros can publish the Python server Docker image to GHCR during release-tag workflows. This avoids turning every production startup into a local image build once release packaging is ready to reference immutable image tags.
Published Image
The Publish Server Image workflow builds the Python wheel, builds python/Dockerfile-prod, and publishes:
ghcr.io/chenglabresearch/ouroboros-server:<release-tag>for release tags such asv1.4.0ghcr.io/chenglabresearch/ouroboros-server:sha-<commit>for the exact source revision
Both tags are produced from the same wheel artifact that the Dockerfile installs.
Release Compose Usage
Release packaging uses npm run prepare:production-server to write
extra-resources/server/compose.yml and extra-resources/server/server-image.json.
For a tag build, the app package workflow sets:
OUROBOROS_SERVER_IMAGE_TAG=v1.4.0
The generated compose file preserves the production ports, ouroboros-volume
mount, host.docker.internal mapping, OUR_ENV=docker, and shm_size settings,
but uses image: instead of build:. Production first launch therefore pulls
the published GHCR image instead of building the server locally.
For digest-pinned packages, set:
OUROBOROS_SERVER_IMAGE_REPOSITORY=ghcr.io/chenglabresearch/ouroboros-server
OUROBOROS_SERVER_IMAGE_DIGEST=sha256:<digest>
npm run prepare:production-server
Development compose files still build locally from source so local edits do not depend on registry state.
Manual Runs
The workflow also supports workflow_dispatch for validating or re-publishing the image from the current branch. Release consumers should still use tag or SHA image references rather than mutable names.