# Это базовый образ для сборки. FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base # Указываем рабочий каталог для следующих комманд WORKDIR /app # Проект нужно сначала собрать, поэтому берём sdk FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build # Это пременная. Будем собирать в режиме Relece. ARG BUILD_CONFIGURATION=Release WORKDIR /src # Копируем из папки хоста в контейнер COPY ["FirstApplication.csproj", "FirstApplication/"] # Выполняем комманду для загрузки всех нужных зависимостей RUN dotnet restore "FirstApplication/FirstApplication.csproj" # Назначаем новую базовую папку WORKDIR "/src/FirstApplication" # Копируем всё в папку для сборки COPY . . # Выполняем сборку проекта RUN dotnet build "FirstApplication.csproj" -c $BUILD_CONFIGURATION -o /app/build # В этот этап попадает всё, что было в publish FROM build AS publish ARG BUILD_CONFIGURATION=Release # Публикуем всё в папку /app/publish RUN dotnet publish "FirstApplication.csproj" -c $BUILD_CONFIGURATION -o /app/publish --self-contained false --no-restore # Берём тот образ, что определили в первой строке FROM base AS final # Указываем рабочую директорию WORKDIR /app # Из опубликованного блока берём то, что опубликовано и закидывае в /app COPY --from=publish /app/publish . # Указываем комманду запуска приложения (когда контейнер запустится, то начнёт с этого) ENTRYPOINT ["dotnet", "FirstApplication.dll"]