Simon Bruder
3ed6442b49
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`).
65 lines
2.5 KiB
Docker
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!"]
|