# Используем образ .NET Runtime как базовый образ для нашего контейнера
FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
# Устанавливаем рабочую директорию в контейнере
WORKDIR /app

# Используем образ .NET SDK для сборки и публикации приложения
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
# Устанавливаем рабочую директорию для сборки
WORKDIR /src
# Копируем файл проекта в контейнер и восстанавливаем зависимости
COPY ["Part1.csproj", "."]
RUN dotnet restore "./Part1.csproj"
# Копируем все остальные файлы проекта в контейнер
COPY . .
# Устанавливаем рабочую директорию
WORKDIR "/src/."
# Собираем проект с конфигурацией Release
RUN dotnet build "Part1.csproj" -c Release -o /app/build

# Создаем стадию публикации на основе сборки
FROM build AS publish
# Публикуем проект с конфигурацией Release
RUN dotnet publish "Part1.csproj" -c Release -o /app/publish /p:UseAppHost=false

# Создаем финальный образ на основе базового образа .NET Runtime
FROM base AS final
# Устанавливаем рабочую директорию в контейнере
WORKDIR /app
# Копируем опубликованные файлы из стадии publish
COPY --from=publish /app/publish .
# Задаем точку входа для контейнера
ENTRYPOINT ["dotnet", "Part1.dll"]