Поиск по сайту:

Как запустить приложение .NET в Docker


Docker — это служба контейнеризации, используемая для запуска приложений в изолированных средах, упакованных со всеми зависимостями и кодом, необходимыми для работы. Он может запускать все виды приложений, в том числе программы на основе .NET с использованием образов среды выполнения, предоставленных Microsoft.

Докеризация .NET

Microsoft предоставляет готовые базовые образы для запуска приложений .NET. Вам не нужно будет устанавливать среду выполнения .NET или SDK в контейнер Docker, поскольку вы можете просто расширить базовый образ Microsoft до версии .NET, которую использует ваше приложение.

Если вы не планируете развертывать контейнеры Windows на сервере Windows, вам потребуется использовать либо .NET Core, либо .NET 5. Старая среда выполнения .NET Framework не является кроссплатформенной и не будет работать в контейнерах на базе Linux.

Если на вашем компьютере для разработки не установлен Docker, вам необходимо установить Docker Desktop, чтобы иметь доступ к CLI. Если вы используете WSL в Windows, вам нужно включить механизм на основе WSL 2, который обеспечивает более высокую производительность.

Для проверки мы создадим новое приложение API ASP.NET. Та же самая общая процедура будет применяться для любого типа приложений, поскольку все, что делает Docker, — это запускает сборку всякий раз, когда вы создаете контейнер, и запускаете ваше приложение с помощью команды точки входа.

Создайте новый файл с именем Dockerfile в корне вашего проекта, где находится ваше решение. Вставьте следующую конфигурацию:

FROM mcr.microsoft.com/dotnet/core/sdk AS build-env
WORKDIR /app

# Copy csproj and restore
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DockerTest.dll"]

Этот Dockerfile извлекает образ .NET Core SDK для выполнения сборки. Он копирует .csproj и восстанавливает, затем копирует все остальное и запускает сборку. Затем он создает новый образ из образа среды выполнения .NET и копирует артефакты сборки.

Наконец, точка входа определяется здесь как dotnet DockerTest.dll. Это запустит веб-сервер ASP.NET, хотя вам может потребоваться изменить параметры вашего приложения или указать совершенно другую команду точки входа.

Вы можете протестировать свой контейнер с помощью docker container run, передав его в идентификаторе контейнера сборки:

docker container run containerid

Для приложения ASP.NET вам нужно открыть порты, сопоставив порт на хосте с портом в контейнере:

docker run -p 80:80 containerid

Вы можете прочитать наше руководство по работе с Docker и Dockerfiles, чтобы узнать больше.