# Build from the repository root, so the workspace (and its lockfile) is in
# the context:
#
#   docker build -f crates/mtgc-server/Dockerfile -t mtgc-server .

FROM rust:1-bookworm AS build
WORKDIR /src
COPY . .
RUN cargo build --release --locked -p mtgc-server \
 && cp target/release/mtgc-server /mtgc-server

FROM debian:bookworm-slim
RUN apt-get update \
 && apt-get install -y --no-install-recommends ca-certificates \
 && rm -rf /var/lib/apt/lists/* \
 && groupadd --system --gid 10001 mtgc \
 && useradd --system --uid 10001 --gid 10001 --home /data mtgc \
 && mkdir /data && chown 10001:10001 /data
COPY --from=build /mtgc-server /usr/local/bin/mtgc-server
# Numeric, so Kubernetes can verify `runAsNonRoot` (it can't resolve names),
# and with a fixed group so `fsGroup: 10001` grants a mounted volume to it.
USER 10001:10001
VOLUME /data
ENV MTGC_DB=/data/mtgc-server.db \
    MTGC_BIND=0.0.0.0:8080
EXPOSE 8080
CMD ["mtgc-server"]
