73 lines
2.5 KiB
Docker
73 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
|
|
FROM mcr.microsoft.com/dotnet/sdk:8.0 as builder-ruleset-generic
|
|
|
|
COPY ./build-ruleset.sh /usr/local/bin/build-ruleset
|
|
|
|
# External rulesets
|
|
|
|
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
|
|
|
|
# Runtime container
|
|
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 \
|
|
xdg-utils \
|
|
&& 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
|
|
|
|
WORKDIR /home/osu
|
|
|
|
RUN mkdir -p .local/share/applications
|
|
|
|
ENTRYPOINT ["/opt/osu/osu!"]
|