Moved build dependencies to different stage to reduce final image size

This commit is contained in:
James Plante 2025-03-02 22:11:21 -05:00
parent 615674d5b6
commit bb3ef5a926
2 changed files with 25 additions and 13 deletions

View File

@ -1,5 +1,8 @@
FROM alpine:3.21
#
# Build stage
#
FROM alpine:3.21 AS rr-builder
ARG RR_VERSION ARG RR_VERSION
# Install Essential Utilities # Install Essential Utilities
@ -10,12 +13,8 @@ RUN apk add bash git curl build-base unzip libc++-dev libc-dev lld cmake ninja m
RUN apk add curl-dev sdl2-dev zlib-dev libpng-dev libogg-dev libvorbis-dev libvpx-dev RUN apk add curl-dev sdl2-dev zlib-dev libpng-dev libogg-dev libvorbis-dev libvpx-dev
RUN apk add --update --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/main libyuv libyuv-dev RUN apk add --update --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/main libyuv libyuv-dev
# Create a 'ringracers' group and user
RUN addgroup -S ringracers && adduser -S ringracers -G ringracers
RUN mkdir /buildfiles && chown ringracers:ringracers /buildfiles
USER ringracers
# Clone the repo # Clone the repo
RUN mkdir /buildfiles
WORKDIR /buildfiles/ WORKDIR /buildfiles/
RUN git clone https://github.com/KartKrewDev/RingRacers.git RUN git clone https://github.com/KartKrewDev/RingRacers.git
@ -25,14 +24,31 @@ COPY --chown=ringracers:ringracers build.sh .
RUN chmod +x build.sh RUN chmod +x build.sh
RUN ./build.sh RUN ./build.sh
# After building #
# Server stage
#
FROM alpine:3.21 AS rr-server
ARG RR_VERSION
# Install runtime dependencies
RUN apk add bash curl sdl2 zlib libpng libogg libvorbis libvpx
RUN apk add --update --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/main libyuv
# Create a 'ringracers' group and user
RUN addgroup -S ringracers && adduser -S ringracers -G ringracers
USER ringracers
# After building, copy build files to new container
WORKDIR /home/ringracers/server
COPY --chown=ringracers:ringracers --from=rr-builder /buildfiles/RingRacers/build/ninja-release/bin/ringracers_$RR_VERSION .
COPY --chown=ringracers:ringracers ringserv-template.cfg .
# Copy runner script
WORKDIR /home/ringracers WORKDIR /home/ringracers
COPY --chown=ringracers:ringracers run_server.sh . COPY --chown=ringracers:ringracers run_server.sh .
RUN chmod +x run_server.sh RUN chmod +x run_server.sh
COPY --chown=ringracers:ringracers ringserv-template.cfg ./server
# Set up environment variables # Set up environment variables
ENV RINGRACERSWADDIR=/data/ringracers-data ENV RINGRACERSWADDIR=/data/ringracers-data
ENV RR_VERSION=${RR_VERSION} ENV RR_VERSION=${RR_VERSION}
ENTRYPOINT [ "./run_server.sh" ] ENTRYPOINT [ "./run_server.sh" ]

View File

@ -1,12 +1,8 @@
#! /bin/bash #! /bin/bash
BUILDDIR=/buildfiles/RingRacers BUILDDIR=/buildfiles/RingRacers
OUTDIR=/home/ringracers/server
cd $BUILDDIR cd $BUILDDIR
git fetch --tags git fetch --tags
git switch --detach tags/$RR_VERSION git switch --detach tags/$RR_VERSION
cmake --preset ninja-release cmake --preset ninja-release
cmake --build --preset ninja-release cmake --build --preset ninja-release
[[ -d $OUTDIR ]] || mkdir $OUTDIR
cp build/ninja-release/bin/ringracers_$RR_VERSION $OUTDIR