Add CPU-only Docker image and fix release tag naming

- Add Dockerfile.cpu and compose.cpu.yaml for CPU-only deployments
- Use sentence-transformers[onnx] + CPU-only torch for ~4x smaller image
- Fix release script: separate git tags (engine-v*) from Docker tags (v*)
- Add CPU image to release build/push pipeline
- Update README with CPU deployment instructions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-02 16:02:00 +01:00
parent c5191df9c0
commit a6bab5e55e
4 changed files with 99 additions and 51 deletions
+24 -13
View File
@@ -111,9 +111,11 @@ else
echo "==> Engine version: $VERSION (no increment)"
fi
TAG="engine-v${VERSION}"
GIT_TAG="engine-v${VERSION}"
DOCKER_TAG="v${VERSION}"
echo " Tag: $TAG"
echo " Git tag: $GIT_TAG"
echo " Image tag: $DOCKER_TAG"
echo " Registry: $IMAGE_BASE"
echo " Forge CLI: $FORGE"
echo " Dry run: $DRY_RUN"
@@ -125,8 +127,8 @@ echo ""
echo "==> Pre-flight checks"
if [[ "$DRY_RUN" == false ]]; then
if git -C "$SCRIPT_DIR" rev-parse "$TAG" &>/dev/null; then
echo "Error: tag $TAG already exists"
if git -C "$SCRIPT_DIR" rev-parse "$GIT_TAG" &>/dev/null; then
echo "Error: tag $GIT_TAG already exists"
exit 1
fi
fi
@@ -148,29 +150,32 @@ fi
#──────────────────────────────────────────────────────────────────────
echo "==> Building Docker engine images ($VERSION)"
NVIDIA_IMAGE="${IMAGE_BASE}/engine:${TAG}-nvidia"
ROCM_IMAGE="${IMAGE_BASE}/engine:${TAG}-rocm"
NVIDIA_IMAGE="${IMAGE_BASE}/engine:${DOCKER_TAG}-nvidia"
ROCM_IMAGE="${IMAGE_BASE}/engine:${DOCKER_TAG}-rocm"
CPU_IMAGE="${IMAGE_BASE}/engine:${DOCKER_TAG}-cpu"
NVIDIA_LATEST="${IMAGE_BASE}/engine:latest-nvidia"
ROCM_LATEST="${IMAGE_BASE}/engine:latest-rocm"
CPU_LATEST="${IMAGE_BASE}/engine:latest-cpu"
run docker build -t "$NVIDIA_IMAGE" -t "$NVIDIA_LATEST" -f "$ENGINE_DIR/Dockerfile.nvidia" "$ENGINE_DIR"
run docker build -t "$ROCM_IMAGE" -t "$ROCM_LATEST" -f "$ENGINE_DIR/Dockerfile.rocm" "$ENGINE_DIR"
run docker build -t "$CPU_IMAGE" -t "$CPU_LATEST" -f "$ENGINE_DIR/Dockerfile.cpu" "$ENGINE_DIR"
echo ""
#──────────────────────────────────────────────────────────────────────
# 4. Commit, tag, and push
#──────────────────────────────────────────────────────────────────────
echo "==> Committing and tagging $TAG"
echo "==> Committing and tagging $GIT_TAG"
if [[ "$INCREMENT" == true ]]; then
run git -C "$SCRIPT_DIR" add "$VERSION_FILE"
run git -C "$SCRIPT_DIR" commit -m "Bump engine version to $VERSION"
fi
run git -C "$SCRIPT_DIR" tag -a "$TAG" -m "Release $TAG"
run git -C "$SCRIPT_DIR" tag -a "$GIT_TAG" -m "Release $GIT_TAG"
run git -C "$SCRIPT_DIR" push origin HEAD
run git -C "$SCRIPT_DIR" push origin "$TAG"
run git -C "$SCRIPT_DIR" push origin "$GIT_TAG"
echo ""
@@ -179,7 +184,7 @@ echo ""
#──────────────────────────────────────────────────────────────────────
echo "==> Creating release via $FORGE"
RELEASE_TITLE="Engine $TAG"
RELEASE_TITLE="Engine $GIT_TAG"
RELEASE_NOTES="## Docker images
\`\`\`bash
@@ -188,16 +193,19 @@ docker pull ${NVIDIA_IMAGE}
# AMD GPU (ROCm)
docker pull ${ROCM_IMAGE}
# CPU only
docker pull ${CPU_IMAGE}
\`\`\`"
if [[ "$FORGE" == "gh" ]]; then
run gh release create "$TAG" \
run gh release create "$GIT_TAG" \
--title "$RELEASE_TITLE" \
--notes "$RELEASE_NOTES"
elif [[ "$FORGE" == "tea" ]]; then
run tea release create \
--tag "$TAG" \
--tag "$GIT_TAG" \
--title "$RELEASE_TITLE" \
--note "$RELEASE_NOTES"
fi
@@ -213,10 +221,13 @@ run docker push "$NVIDIA_IMAGE"
run docker push "$NVIDIA_LATEST"
run docker push "$ROCM_IMAGE"
run docker push "$ROCM_LATEST"
run docker push "$CPU_IMAGE"
run docker push "$CPU_LATEST"
echo ""
echo "==> Release $TAG complete!"
echo "==> Release $GIT_TAG complete!"
echo ""
echo " Images:"
echo " $NVIDIA_IMAGE"
echo " $ROCM_IMAGE"
echo " $CPU_IMAGE"