# TODO: I would LOVE to use Alpine w/musl, but Rust only supports GNU on
# s390x as of December 2025.
FROM docker.io/library/debian:13 AS build

RUN apt update && apt install -y curl build-essential
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

ENV PICCA_CONTAINER="true"

WORKDIR /usr/src/picca
COPY . .

RUN /root/.cargo/bin/cargo build --release --bin picca --features bin

FROM docker.io/library/debian:13 AS package

ARG VERSION
ARG DATE

LABEL org.opencontainers.image.title="picca"
LABEL org.opencontainers.image.authors="bryson@steck.dev"
LABEL org.opencontainers.image.version="${VERSION}"
LABEL org.opencontainers.image.licenses="MIT"
LABEL org.opencontainers.image.url="https://forge.steck.dev/bryson/-/packages/container/picca/${VERSION}"
LABEL org.opencontainers.image.source="https://forge.steck.dev/bryson/picca"
LABEL org.opencontainers.image.created="${DATE}"
LABEL org.opencontainers.image.base.name="docker.io/library/debian:13"

RUN apt update \
  && apt upgrade -y \
  && apt autoremove -y \
  && rm -rf /var/lib/apt/* /tmp/* \
  && mkdir -p /usr/src/picca

COPY ./docker/entrypoint.sh /usr/local/bin/entrypoint.sh
COPY . /usr/src/picca
COPY --from=build /usr/src/picca/target/release/picca /usr/local/bin

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
