shoebox 0.2.0

Lightweight S3-compatible object storage backed by local filesystem
Documentation
# Stage 1: Build
FROM rust:slim AS builder

ARG TARGETARCH

WORKDIR /build

# Install build dependencies for SQLite (required by sqlx)
RUN apt-get update && apt-get install -y pkg-config libsqlite3-dev && rm -rf /var/lib/apt/lists/*

COPY Cargo.toml Cargo.lock ./
COPY migrations ./migrations
COPY src ./src

# Cache mounts: cargo registry is arch-independent, target dir is per-arch
RUN --mount=type=cache,target=/usr/local/cargo/registry \
    --mount=type=cache,target=/usr/local/cargo/git \
    --mount=type=cache,target=/build/target,id=cargo-target-${TARGETARCH} \
    cargo build --release && cp target/release/shoebox /usr/local/bin/shoebox

# Stage 2: Runtime
FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y libsqlite3-0 ca-certificates && rm -rf /var/lib/apt/lists/*

COPY --from=builder /usr/local/bin/shoebox /usr/local/bin/shoebox

# Default data directory
RUN mkdir -p /data

EXPOSE 9000

ENTRYPOINT ["shoebox"]
CMD ["/data"]