72 lines
2.3 KiB
Docker
72 lines
2.3 KiB
Docker
# Base image
|
|
FROM cgr.dev/chainguard/aspnet-runtime:latest AS base
|
|
WORKDIR /app
|
|
|
|
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
|
|
|
|
# Install required packages
|
|
RUN apt-get update; apt-get install unzip -y; apt-get clean
|
|
RUN curl -fsSL https://bun.sh/install | bash
|
|
ENV PATH="/root/.bun/bin:${PATH}"
|
|
|
|
# Build options
|
|
ARG BUILD_CONFIGURATION=Release
|
|
|
|
# Download npm packages
|
|
WORKDIR /src/Hosts/Moonlight.Frontend.Host/Styles
|
|
|
|
COPY ["Hosts/Moonlight.Frontend.Host/Styles/package.json", "package.json"]
|
|
|
|
RUN bun install
|
|
|
|
# Restore nuget packages
|
|
WORKDIR /src
|
|
|
|
COPY ["Moonlight.Api/Moonlight.Api.csproj", "Moonlight.Api/"]
|
|
COPY ["Moonlight.Frontend/Moonlight.Frontend.csproj", "Moonlight.Frontend/"]
|
|
COPY ["Moonlight.Shared/Moonlight.Shared.csproj", "Moonlight.Shared/"]
|
|
|
|
COPY ["Hosts/Moonlight.Frontend.Host/Moonlight.Frontend.Host.csproj", "Hosts/Moonlight.Frontend.Host/"]
|
|
COPY ["Hosts/Moonlight.Api.Host/Moonlight.Api.Host.csproj", "Hosts/Moonlight.Api.Host/"]
|
|
|
|
RUN dotnet restore "Hosts/Moonlight.Api.Host/Moonlight.Api.Host.csproj"
|
|
RUN dotnet restore "Hosts/Moonlight.Frontend.Host/Moonlight.Frontend.Host.csproj"
|
|
|
|
# Copy over the whole sources
|
|
COPY . .
|
|
|
|
# Build styles
|
|
# We need to build it before, so the class lists get generated
|
|
WORKDIR "/src/Hosts/Moonlight.Frontend.Host"
|
|
RUN dotnet build "./Moonlight.Frontend.Host.csproj" -c $BUILD_CONFIGURATION -o /app/build-frontend
|
|
|
|
WORKDIR "/src/Hosts/Moonlight.Frontend.Host/Styles"
|
|
RUN bun run build
|
|
|
|
# Build projects
|
|
WORKDIR "/src/Hosts/Moonlight.Api.Host"
|
|
RUN dotnet build "./Moonlight.Api.Host.csproj" -c $BUILD_CONFIGURATION -o /app/build-api
|
|
|
|
WORKDIR "/src/Hosts/Moonlight.Frontend.Host"
|
|
RUN dotnet build "./Moonlight.Frontend.Host.csproj" -c $BUILD_CONFIGURATION -o /app/build-frontend
|
|
|
|
FROM build AS publish
|
|
|
|
# Publish options
|
|
ARG BUILD_CONFIGURATION=Release
|
|
|
|
# Publish applications
|
|
WORKDIR "/src/Hosts/Moonlight.Api.Host"
|
|
RUN dotnet publish "./Moonlight.Api.Host.csproj" -c $BUILD_CONFIGURATION -o /app/publish-api /p:UseAppHost=false
|
|
|
|
WORKDIR "/src/Hosts/Moonlight.Frontend.Host"
|
|
RUN dotnet publish "./Moonlight.Frontend.Host.csproj" -c $BUILD_CONFIGURATION -o /app/publish-frontend /p:UseAppHost=false
|
|
|
|
FROM base AS final
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=publish /app/publish-api .
|
|
COPY --from=publish /app/publish-frontend/wwwroot ./wwwroot
|
|
|
|
ENTRYPOINT ["dotnet", "Moonlight.Api.Host.dll"] |