FROM rust:1.85-bookworm AS builder

WORKDIR /app

# Copy manifests first for better layer caching
COPY Cargo.toml Cargo.lock ./

# Create a dummy main to cache dependency compilation
RUN mkdir src && echo "fn main() {}" > src/main.rs && \
    mkdir migrations && touch migrations/.keep && \
    echo "fn main() {}" > build.rs && \
    cargo build --release && \
    rm -rf src build.rs migrations

# Copy real source code
COPY . .

# Touch main.rs so cargo knows it changed
RUN touch src/main.rs && cargo build --release

# Runtime stage
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=builder /app/target/release/mikebase /usr/local/bin/mikebase
COPY --from=builder /app/config.example.toml /etc/mikebase/config.example.toml

EXPOSE 3000

CMD ["mikebase"]
