osu/Containerfile

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!"]