Files
2026-08-01 20:56:44 +02:00

51 lines
1.2 KiB
Docker

##################
### BASE STAGE ###
##################
FROM rust:1.97.1 AS base
ARG TARGETARCH # https://docs.docker.com/build/building/multi-platform/
RUN if [ "$TARGETARCH" = "" ]; then echo "x86_64-unknown-linux-musl" | tee /rust-target; fi
RUN if [ "$TARGETARCH" = "amd64" ]; then echo "x86_64-unknown-linux-musl" | tee /rust-target; fi
RUN if [ "$TARGETARCH" = "arm64" ]; then echo "aarch64-unknown-linux-musl" | tee /rust-target; fi
# Install build dependencies
RUN rustup target add $(cat /rust-target)
# required by "ring"
RUN apt-get update && apt-get install -y musl-tools
RUN mkdir /out
WORKDIR /app
###################
### BUILD STAGE ###
###################
FROM base AS build
COPY . .
RUN cargo build --release --locked --target $(cat /rust-target) -p flatpak-repo
RUN mv /app/target/$(cat /rust-target)/release/flatpak-repo /out/flatpak-repo
RUN strip /out/flatpak-repo
########################
### PRODUCTION STAGE ###
########################
FROM archlinux:latest
RUN pacman -Syu --noconfirm && pacman -S --noconfirm flatpak ostree
ENV FR_BIND="0.0.0.0:3000"
EXPOSE 3000/tcp
ENV FR_REPO_PATH="/flatpak"
ENV RUST_LOG="info"
WORKDIR /
# Copy application binary
COPY --from=build /out/flatpak-repo /bin/
CMD ["/bin/flatpak-repo"]