osu/Dockerfile
Simon Bruder 3ed6442b49
Update 3rd party rulesets
Some did not build and were removed. This change also makes building
much faster, as the build now caches NuGet packages and uses one stage
per ruleset, so they can be built in parallel (by passing `--jobs N`).
2024-05-09 02:34:30 +02:00

65 lines
2.5 KiB
Docker

# Builder for base osu!
FROM mcr.microsoft.com/dotnet/sdk:8.0 as builder
ENV DOTNET_CLI_TELEMETRY_OPTOUT 1
RUN apt-get update \
&& apt-get -y install jq
ARG OSU_VERSION
ENV OSU_VERSION=$OSU_VERSION
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache echo "Downloading and building osu! ${OSU_VERSION}" >&2 \
&& git clone --depth=1 --single-branch -b ${OSU_VERSION} https://github.com/ppy/osu \
&& cd osu \
&& dotnet publish \
-c Release \
-r linux-x64 \
--no-self-contained \
-o /opt/osu/ \
-p:Version=${OSU_VERSION} \
osu.Desktop
# Generic builder for rulesets (using onbuild and args)
FROM mcr.microsoft.com/dotnet/sdk:8.0 as builder-ruleset-generic
COPY ./build-ruleset.sh /usr/local/bin/build-ruleset
FROM builder-ruleset-generic as builder-swing
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache build-ruleset https://github.com/EVAST9919/lazer-swing
FROM builder-ruleset-generic as builder-tau
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache build-ruleset https://github.com/Altenhh/tau
FROM builder-ruleset-generic as builder-bosu
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache build-ruleset https://github.com/EVAST9919/bosu
FROM builder-ruleset-generic as builder-rush
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache build-ruleset https://github.com/swoolcock/rush
FROM builder-ruleset-generic as builder-sentakki
RUN --mount=type=cache,target=/root/.nuget/packages --mount=type=cache,target=/root/.local/share/NuGet/http-cache build-ruleset https://github.com/LumpBloom7/sentakki
FROM mcr.microsoft.com/dotnet/runtime:8.0
RUN apt-get update \
&& apt-get -y install --no-install-recommends \
ffmpeg \
libegl1-mesa-dev \
libgbm1 \
libgl1 \
pulseaudio \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /opt/osu/ /opt/osu/
COPY --from=builder-swing /dlls/*.dll /opt/osu/
COPY --from=builder-tau /dlls/*.dll /opt/osu/
COPY --from=builder-bosu /dlls/*.dll /opt/osu/
COPY --from=builder-rush /dlls/*.dll /opt/osu/
COPY --from=builder-sentakki /dlls/*.dll /opt/osu/
RUN adduser --disabled-password --gecos '' osu
USER osu
ENTRYPOINT ["/opt/osu/osu!"]