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"] |