41 lines
1.5 KiB
Docker
41 lines
1.5 KiB
Docker
# ---- 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 |