cratery 1.11.1

Cratery -- a private cargo registry
ARG BUILD_FLAGS=
ARG BUILD_TARGET=debug


## Base image with Rust toolchain and dependencies
FROM buildpack-deps:24.04-curl AS base
LABEL maintainer="Laurent Wouters <lwouters@cenotelie.fr>" vendor="Cénotélie Opérations SAS"  description="Cratery -- a private cargo registry"
# add packages
RUN apt-get update && apt-get install -y --no-install-recommends \
		build-essential \
		pkg-config \
		libsqlite3-0 \
		libsqlite3-dev \
		musl-tools \
		git \
		ssh

# add custom user
RUN groupmod -n cratery ubuntu && usermod -l cratery -d /home/cratery ubuntu && mv /home/ubuntu /home/cratery
ENV HOME=/home/cratery
USER cratery
# Add support for Rust
ENV PATH="/home/cratery/.cargo/bin:${PATH}"
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y \
	&& rustup toolchain install nightly \
	&& rustup default nightly \
	&& rm -rf /home/cratery/.cargo/registry \
	&& mkdir /home/cratery/.cargo/registry
# add ssh host key for github.com
RUN mkdir /home/cratery/.ssh && ssh-keyscan -t rsa github.com >> /home/cratery/.ssh/known_hosts
RUN chmod -R go-rwx /home/cratery/.ssh



## Builder to build the application
FROM base AS builder
ARG BUILD_FLAGS
COPY --chown=cratery . /home/cratery/src
RUN cd /home/cratery/src && cargo +stable build ${BUILD_FLAGS}



## Final target from the base with the application's binary
FROM base
ARG BUILD_TARGET
COPY --from=builder /home/cratery/src/target/${BUILD_TARGET}/cratery /
ENTRYPOINT ["/cratery"]