# 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"]