zc2 0.0.14

P2P compute broker with credit-based billing, WAL, and broker mesh support
# syntax=docker/dockerfile:1.4
# zakuroai/zc — Zakuro Compute Broker
#
# Build: docker build -f docker/Dockerfile -t zakuroai/zc:latest .
# Run:   docker run -p 9000:9000 zakuroai/zc broker

FROM rust:1.83-slim AS builder

RUN apt-get update && apt-get install -y --no-install-recommends \
    pkg-config libssl-dev \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /build

# Cache dependency build
COPY Cargo.toml Cargo.lock build.rs ./
RUN mkdir src && echo "fn main() {}" > src/main.rs
RUN --mount=type=cache,target=/usr/local/cargo/registry,sharing=locked \
    --mount=type=cache,target=/build/target,sharing=locked \
    cargo build --release || true

# Build real binary
COPY src ./src
RUN --mount=type=cache,target=/usr/local/cargo/registry,sharing=locked \
    --mount=type=cache,target=/build/target,sharing=locked \
    touch src/main.rs && \
    cargo build --release && \
    cp /build/target/release/zc /tmp/zc

# -------------------------------------------------------------------
FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y --no-install-recommends \
    curl ca-certificates \
    && rm -rf /var/lib/apt/lists/*

COPY --from=builder /tmp/zc /usr/local/bin/zc

EXPOSE 9000

HEALTHCHECK --interval=10s --timeout=5s --retries=3 \
    CMD curl -f http://localhost:9000/health || exit 1

ENTRYPOINT ["/usr/local/bin/zc"]
CMD ["broker"]