| name | publish-mock-server |
| description | Build and publish the mock-server Docker image to GitHub Container Registry. Use when mock server fixtures or code have changed and need to be published. |
Publish Mock Server
Build and publish the mock-server Docker image to ghcr.io/vfarcic/dot-ai-mock-server:latest.
Prerequisites
Steps
Run all commands from the repository root. The build context is the
mock-server/ directory (relative — do NOT hardcode an absolute path).
-
Set up a multi-arch builder (one-time per machine)
The default docker driver cannot push a multi-platform manifest, and
building arm64 on an amd64 host needs QEMU. Register the emulator and
create a container-driver builder:
docker run --privileged --rm tonistiigi/binfmt --install arm64
docker buildx create --name mockbuilder --driver docker-container --use --bootstrap
-
Build and push multi-arch Docker image
Tag both latest and the current dot-ai release version (so downstream
repos can pin to a contract version instead of a digest). Derive the version
from the root package.json:
VERSION=$(node -p "require('./package.json').version")
docker buildx build --builder mockbuilder \
--platform linux/amd64,linux/arm64 \
-t ghcr.io/vfarcic/dot-ai-mock-server:latest \
-t ghcr.io/vfarcic/dot-ai-mock-server:$VERSION \
--push mock-server
-
Verify the push
Confirm both tags resolve to the same digest and carry both platforms:
docker buildx imagetools inspect ghcr.io/vfarcic/dot-ai-mock-server:latest
Note the manifest-list digest (sha256:…) — downstream repos pin to it.
Usage
After publishing, consumers (like dot-ai-ui) can use:
services:
mock-api:
image: ghcr.io/vfarcic/dot-ai-mock-server:latest
ports:
- "3001:3001"
When to Publish
Run this skill when:
- Fixtures are added or modified in
mock-server/fixtures/
- Mock server code changes (
server.ts, routes.ts)
- API schemas change that affect mock responses
Notes
- Publishes
latest plus an immutable version tag matching the dot-ai release
(e.g. 1.22.0). latest is mutable; downstream repos should pin to the
version tag or the digest for reproducible tests.
- Publishing is manual (not wired into CI/release), so re-run this skill after
merging any change that affects the mock contract — cutting a dot-ai release
does NOT rebuild the image.
- Image is ~230MB (Node.js alpine + fixtures)