# ---- Stage 1: Build ---- FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src # Устанавливаем Python (необходим для WebAssembly компиляции) RUN apt-get update && apt-get install -y python3 && ln -s /usr/bin/python3 /usr/bin/python # Устанавливаем workload для WebAssembly RUN dotnet workload install wasm-tools # Копируем csproj всех проектов для восстановления зависимостей COPY ["PlaylistShared.Pwa/PlaylistShared.Pwa.csproj", "PlaylistShared.Pwa/"] COPY ["PlaylistShared.Shared/PlaylistShared.Shared.csproj", "PlaylistShared.Shared/"] # Восстанавливаем зависимости RUN dotnet restore "PlaylistShared.Pwa/PlaylistShared.Pwa.csproj" # Копируем весь исходный код COPY . . # Переходим в папку проекта и публикуем WORKDIR "/src/PlaylistShared.Pwa" RUN dotnet publish "./PlaylistShared.Pwa.csproj" -c $BUILD_CONFIGURATION -o /app/publish RUN ls -la /app/publish/wwwroot # ---- Stage 2: Nginx ---- FROM nginx:alpine AS final # Копируем кастомную конфигурацию Nginx COPY PlaylistShared.Pwa/nginx.conf /etc/nginx/nginx.conf # Удаляем дефолтную статику Nginx RUN rm -rf /usr/share/nginx/html/* # Копируем собранные файлы Blazor (wwwroot) в папку Nginx COPY --from=build /app/publish/wwwroot /usr/share/nginx/html # Открываем порт 80 EXPOSE 80