# Slim Clawmates runtime = the zeroclaw daemon (gateway API), API-only. # Simple full-source build (avoids the upstream Dockerfile's stale manifest- # prefetch step). web/dist may be empty → dashboard is omitted, /api/* works. # Requires BuildKit (cache mounts). Build context = the zeroclaw source tree. # syntax=docker/dockerfile:1 # bookworm-pinned so the binary's glibc matches the bookworm runtime stage FROM rust:1.94-slim-bookworm AS build RUN apt-get update && apt-get install -y --no-install-recommends \ pkg-config build-essential cmake libssl-dev ca-certificates git \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY . . # Ensure the gateway's include_dir!("../../web/dist") target exists at compile time. RUN mkdir -p web/dist RUN --mount=type=cache,id=cm-cargo-registry,target=/usr/local/cargo/registry,sharing=locked \ --mount=type=cache,id=cm-cargo-git,target=/usr/local/cargo/git,sharing=locked \ --mount=type=cache,id=cm-target-bookworm,target=/app/target,sharing=locked \ cargo build --release --locked --bin zeroclaw \ && cp target/release/zeroclaw /usr/local/bin/zeroclaw FROM debian:bookworm-slim RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates \ && rm -rf /var/lib/apt/lists/* COPY --from=build /usr/local/bin/zeroclaw /usr/local/bin/zeroclaw ENV HOME=/zeroclaw-data \ ZEROCLAW_WORKSPACE=/zeroclaw-data/workspace \ ZEROCLAW_GATEWAY_PORT=42617 RUN mkdir -p /zeroclaw-data/workspace EXPOSE 42617 ENTRYPOINT ["zeroclaw"] CMD ["daemon"]