Container Images
How Conduit publishes multi-arch images to GHCR and Docker Hub.
Conduit module images are built and published by CI. Use tagged releases in production; dev tracks main.
Workflows
| Workflow | Trigger | Purpose |
|---|---|---|
| images.build.yml | push to main, release, workflow_dispatch | Multi-arch (linux/amd64, linux/arm64) images to GHCR; release also pushes Docker Hub |
| production.yaml | release | npm SDK publish only — does not build container images |
On release, production.yaml and images.build.yml run independently.
Image tags
| Channel | GHCR | Docker Hub | :latest |
|---|---|---|---|
main push | ghcr.io/conduitplatform/<image>:dev | — | — |
| Stable release | :<version> | conduitplatform/<image>:<version> | yes |
| Prerelease / alpha / beta / rc | :<version> | :<version> | no |
Example: ghcr.io/conduitplatform/database:0.17.0-alpha.2 or docker.io/conduitplatform/router:0.16.26.
Compose and Helm charts typically set IMAGE_TAG or chart appVersion to pin a channel. See Docker Compose and Kubernetes / Helm.
Post-change validation
After workflow or Dockerfile changes:
- Manifest list:
docker buildx imagetools inspect ghcr.io/conduitplatform/database:dev— expectlinux/amd64andlinux/arm64. - Release: repeat for a version tag after a green release workflow.
- arm64: watch the
databasejob first (QEMU arm64 build; native Alpine deps). - Concurrency: two pushes touching the same module cancel only that image's job; pushes touching different modules run in parallel.
Local builds
From the Conduit repo root:
docker buildx bake --file docker-bake.hcl --print database
./scripts/docker-build.sh databaseFor full stack setup from images, see Install.