35 lines
1.9 KiB
Docker
35 lines
1.9 KiB
Docker
|
# Это базовый образ для сборки.
|
|||
|
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"]
|