Как создать Docker-образ .NET Web API
Одним из основных преимуществ Docker является то, что он позволяет запускать программные проекты без необходимости настраивать сложные среды разработки.
Это руководство покажет вам, как создать Docker-образ веб-API .NET 5. Затем вы можете использовать образ для запуска внутреннего кода с любого ПК, на котором установлен Docker, и взаимодействия с API из интерфейсного веб-проекта или мобильного приложения.
Создание веб-API .NET 5
И Docker, и .NET 5 являются кроссплатформенными и имеют открытый исходный код, поэтому вы можете следовать этому руководству независимо от того, используете ли вы macOS, Windows или Linux.
Используйте интерфейс командной строки dotnet для создания проекта веб-API ASP.NET с помощью следующей команды:
dotnet new webapi -o aspdockerapi
Приведенная выше команда создает проект с именем aspdockerapi и помещает его в папку с тем же именем. Кроме того, приложение предоставляет контроллеру API некоторые образцы данных прогноза погоды.
Примечание . Если на вашем компьютере не установлен .NET 5, вы можете скачать его по ссылке ниже.
Скачать : .NET 5 для Windows, macOS и Linux
После создания проекта вы можете перейти в корневую папку проекта, используя следующую команду.
cd aspdockerapi
Вы можете запускать и обслуживать веб-API, используя команду ниже.
dotnet run
По умолчанию приложение будет обслуживаться через порт 5001. Вы можете просмотреть образцы данных приложения в своем браузере по следующему URL-адресу: https: // localhost: 5001 / weatherforecast, и данные API должны выглядеть, как показано ниже.
Инструкции по созданию образа Docker
Чтобы создать образ Docker, вам необходимо дать Docker Engine некоторые инструкции по его созданию. Эти инструкции следует поместить в файл с именем Dockerfile . Обратите внимание, что у файла нет расширения.
Используйте следующую команду для создания файла Dockerfile в корневой папке проекта приложения.
touch Dockerfile
После создания Dockerfile структура папок ваших проектов должна быть похожей на приведенную ниже:
Теперь скопируйте и вставьте приведенный ниже код в свой Dockerfile .
FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build
WORKDIR /src
COPY ["aspdockerapi.csproj", "./"]
RUN dotnet restore "./aspdockerapi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "aspdockerapi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "aspdockerapi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "aspdockerapi.dll"]
Примечание . В приведенном выше файле Dockerfile имена проекта и dll – aspdockerapi.csproj и aspdockerapi.dll соответственно. Если у вашего проекта другое имя, обязательно обновите файл Docker с правильными именами.
Понимание инструкций Dockerfile
Dockerfile в основном состоит из ключевых слов Dockerfile, которые по соглашению представляют собой слова с заглавными буквами. Ключевые слова определяют инструкцию для выполнения на каждом уровне образа Docker. Ниже приведены основные ключевые слова Docker, которые используются в приведенном выше файле Docker.
1. ОТ
Ключевое слово FROM определяет базовое изображение, на котором мы хотим построить наше изображение. В приведенном выше файле Dockerfile исходный базовый образ – это образ .NET 5 от Microsoft. Базовый образ .NET 5 содержит необходимые компоненты для запуска приложения.
2. WORKDIR
WORKDIR устанавливает рабочий каталог или контекст внутри изображения. В этом примере каталог / app назначается корневым рабочим каталогом по умолчанию с помощью следующего оператора WORKDIR / app .
3. КОПИРОВАТЬ
Ключевое слово COPY просто копирует содержимое из одной папки и помещает его в другую. В этом примере он изначально используется для копирования основного файла проекта, то есть aspdockerapi . csproj в рабочий каталог изображений.
4. ЗАПУСК
Ключевое слово RUN используется для запуска определенной команды Linux в образе Docker. В приведенном выше файле Dockerfile команда RUN используется для восстановления зависимостей, сборки проекта ASP.NET и публикации проекта.
5. CMD
Ключевое слово CMD немного похоже на ключевое слово RUN, рассмотренное выше. Он также используется при запуске команды Linux, но в отличие от ключевого слова RUN, которое запускает команды для создания образа, ключевое слово CMD используется для запуска команд Linux при запуске образа в экземпляре контейнера.
6. EXPOSE
Ключевое слово EXPOSE используется для открытия порта внутри образа Docker внешнему миру. В этом случае изображение предоставляет порт 80, который используется для предоставления доступа к API при запуске контейнера Docker.
Создание образа Docker
Чтобы создать образ Docker на основе Dockerfile, просто выполните следующую команду в корневой папке проекта, то есть там, где находится Dockerfile .
docker build -t dockerwebapi -f Dockerfile .
Приведенная выше команда помечает образ Docker именем dockerwebapi, а также указывает, что инструкции по созданию этого образа находятся в файле Dockerfile .
После завершения создания образа вы можете проверить, указан ли он как локальный образ Docker, с помощью следующей команды:
docker images
Вывод команды выше должен быть аналогичен приведенному ниже, и в этом случае изображение ( dockerwebapi ) появляется в первой строке.
Если на вашем ПК не установлен Docker, вот как установить Docker в Ubuntu Linux , в противном случае используйте ссылку ниже, чтобы загрузить и установить Docker.
Скачать : руководство по загрузке и установке Docker
Запуск образа Docker
Чтобы запустить только что созданный образ Docker, используйте следующую команду. Параметр -ti указывает, что изображение должно запускаться в интерактивном режиме терминала, а –rm указывает, что контейнер следует удалить сразу после его выхода.
docker run -ti --rm -p 8080:80 dockerwebapi
Кроме того, команда указывает, что контейнер Docker должен работать на HTTP-порту 8080, который отображается на порт 80 внутри contianer.
Перейдите по URL-адресу: http: // localhost: 8080 / WeatherForecast в своем браузере, и вы обнаружите, что данные вашего API обслуживаются из экземпляра Docker, который вы используете.
Зачем использовать Docker?
В этом руководстве показано, как создать Docker-образ веб-API .NET 5.
С помощью Docker вы можете автоматизировать развертывание приложений, упростить настройку сред разработки программного обеспечения и упростить сотрудничество с другими разработчиками программного обеспечения.
Docker также предлагает несколько преимуществ по сравнению с другими технологиями виртуализации, поэтому вам, вероятно, следует рассмотреть возможность его использования в своих проектах разработки программного обеспечения.