From 8cb8a37dc41b1dd936e563334fead7ccea9e4c8e Mon Sep 17 00:00:00 2001 From: ruv Date: Mon, 25 May 2026 23:06:14 -0400 Subject: [PATCH] feat(docker): bundle homecore-server (HOMECORE / ADRs 126-134) in the image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The HOMECORE native Rust port of Home Assistant landed in v0.10.0 (PR #800). The published Docker image now ships its binary alongside sensing-server and cog-ha-matter so a single `docker run` brings up the full RuView + HA-wire-compatible stack. Dockerfile.rust: - cargo build --release -p homecore-server in the build stage - strip the new binary - copy /app/homecore-server in the runtime stage - sanity-check: image build now fails if /app/homecore-server isn't executable (same guard pattern that already covers sensing-server and cog-ha-matter) - EXPOSE 8123 (HA-compat REST + WebSocket port — homecore-api binds 0.0.0.0:8123 by default per its --bind CLI flag) docker-entrypoint.sh: - new dispatch keyword: `homecore` or `homecore-server` Usage: docker run --network host ruvnet/wifi-densepose:latest homecore Defaults --bind to 0.0.0.0:8123 (overridable via HOMECORE_BIND env) The existing two dispatch paths (no arg → sensing-server, `cog-ha-matter` → HA + Matter cog) keep working unchanged. Three-binary image, one entrypoint, operator picks the role at run time. Triggers a workflow rebuild on push to main per the docker workflow's path filter; the multi-arch (amd64 + arm64) image will be published to Docker Hub as `ruvnet/wifi-densepose:latest` after CI green. Refs ADRs 126-134, v0.10.0 release. Co-Authored-By: claude-flow --- docker/Dockerfile.rust | 10 +++++++++- docker/docker-entrypoint.sh | 8 ++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile.rust b/docker/Dockerfile.rust index 9afa77a5..8418ac03 100644 --- a/docker/Dockerfile.rust +++ b/docker/Dockerfile.rust @@ -19,9 +19,13 @@ COPY vendor/ruvector/ /build/vendor/ruvector/ # (ADR-115) is wired in (auto-discovery topics flow to Home Assistant) # - cog-ha-matter, the ADR-116 Cognitum cog that wraps HA-DISCO + # HA-MIND + mDNS + embedded broker for Home Assistant / Matter +# - homecore-server, the ADRs-126-134 HOMECORE native Rust port of +# Home Assistant (HA-wire-compat REST + WebSocket on :8123, +# SQLite + ruvector recorder, automation, assist, plugins, HAP) RUN cargo build --release -p wifi-densepose-sensing-server --features mqtt 2>&1 \ && cargo build --release -p cog-ha-matter 2>&1 \ - && strip target/release/sensing-server target/release/cog-ha-matter + && cargo build --release -p homecore-server 2>&1 \ + && strip target/release/sensing-server target/release/cog-ha-matter target/release/homecore-server # Stage 2: Runtime FROM debian:bookworm-slim @@ -35,6 +39,7 @@ WORKDIR /app # Copy binaries COPY --from=builder /build/target/release/sensing-server /app/sensing-server COPY --from=builder /build/target/release/cog-ha-matter /app/cog-ha-matter +COPY --from=builder /build/target/release/homecore-server /app/homecore-server # Copy UI assets COPY ui/ /app/ui/ @@ -52,6 +57,7 @@ RUN set -e; \ done; \ test -x /app/sensing-server || { echo "FATAL: /app/sensing-server is not executable"; exit 1; }; \ test -x /app/cog-ha-matter || { echo "FATAL: /app/cog-ha-matter is not executable"; exit 1; }; \ + test -x /app/homecore-server || { echo "FATAL: /app/homecore-server is not executable"; exit 1; }; \ echo "image assets OK" # Optional bearer-token auth on /api/v1/*: leave unset for LAN-mode (default), @@ -67,6 +73,8 @@ EXPOSE 3001 EXPOSE 5005/udp # MQTT broker (cog-ha-matter embedded broker — Home Assistant + Matter) EXPOSE 1883 +# HOMECORE HA-compatible REST + WebSocket (homecore-server) +EXPOSE 8123 ENV RUST_LOG=info diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index 428c2e13..e0851137 100755 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -28,6 +28,14 @@ case "${1:-}" in --sensing-url "${SENSING_URL:-http://127.0.0.1:3000}" \ "$@" ;; + homecore|homecore-server) + # Route to the HOMECORE native Rust port of Home Assistant + # (ADRs 126-134, v0.10.0). Default bind matches HA at :8123. + shift + exec /app/homecore-server \ + --bind "${HOMECORE_BIND:-0.0.0.0:8123}" \ + "$@" + ;; esac # If the first argument looks like a flag (starts with -), prepend the