Dockerfile
Rama main · réplica de lectura del repositorio original.
# syntax=docker/dockerfile:1.7
ARG RUST_VERSION=1.99.0
ARG RUST_IMAGE=rust:1.99.0-bookworm@sha256:59037199c44290f2befcdd58dcc540164763fc296950255aaefeef096a1866b0
ARG RUNTIME_IMAGE=debian:bookworm-slim@sha256:7b140f374b289a7c2befc338f42ebe6441b7ea838a042bbd5acbfca6ec875818
FROM ${RUST_IMAGE} AS builder
ARG RUST_VERSION
WORKDIR /workspace
ENV RUSTUP_TOOLCHAIN=${RUST_VERSION}
COPY . .
RUN --mount=type=cache,target=/usr/local/cargo/registry \
--mount=type=cache,target=/usr/local/cargo/git \
--mount=type=cache,target=/workspace/target \
cargo build --locked --release -p shardline --bin shardline \
&& cp /workspace/target/release/shardline /tmp/shardline
FROM ${RUNTIME_IMAGE} AS runtime
RUN apt-get update \
&& apt-get install --yes --no-install-recommends ca-certificates libssl3 \
&& rm -rf /var/lib/apt/lists/* \
&& groupadd --system --gid 10001 shardline \
&& useradd --system --uid 10001 --gid 10001 --create-home --home-dir /var/lib/shardline shardline \
&& mkdir -p /var/lib/shardline \
&& chown -R shardline:shardline /var/lib/shardline
COPY --from=builder /tmp/shardline /usr/local/bin/shardline
USER 10001:10001
# Ensure the container can run with arbitrary non-root UIDs
ENV SHARDLINE_BIND_ADDR=0.0.0.0:8080
ENV SHARDLINE_ROOT_DIR=/var/lib/shardline
ENV SHARDLINE_CHUNK_SIZE_BYTES=65536
EXPOSE 8080
VOLUME ["/var/lib/shardline"]
STOPSIGNAL SIGINT
ENTRYPOINT ["/usr/local/bin/shardline"]
CMD ["serve"]