В моих последних двух статьях Demystinging Docker и введение в Куберанес. Я объяснил концепцию докера и Куберанес и как они помогают упростить разработку, развертывание и операции. Эта статья является частью 1 серии из двух частей по развертыванию ASP. Чистая приложение с Kubernetes, направленным на практическое руководство к Куберату. В этой статье мы сосредоточимся на создании образа Docker для веб-API ASP.NET CORE WEB, запускаем изображение в контейнере и развертываем этот контейнер в Docker Hub.
- Docker, VS Code и VS Code Docker Dection должен быть установлен. Скачать Docker здесь Отказ Скачать vs код здесь .Go в вкладку VSCode Extensions, поиск докеров и установите его.
VS Code Docker Расширение предоставляет пользовательский способ создания, сборки и запуска изображений докера.
2. для .NET. Разработка, вам придется установить .NET Основной комплект разработки программного обеспечения. здесь Отказ
Создайте проект webapi
- Создайте новую папку для вашего проекта
- Создайте проект Dotnet Core Web API.
Как вы можете видеть, это веб-API BoaterPlate Web, который приходит, когда вы создаете новый проект.
Создать dockerfile
Откройте командный палитра — (Ctrl + Shift + P) или на Mac (⇧⌘p) и используйте Docker: добавьте файлы докера на Workspace …
Используйте .NET: ASP.NET CORE при предложении для платформы приложений.
Выберите Windows или Linux при предложении выбрать операционную систему. Окна применимы только в том случае, если ваша установка Docker настроен на использование контейнеров Windows.
Вам будет предложено, хотите ли вы добавить Docker Compose файлы. Мы не будем использовать Docker Compose в этом руководстве, поэтому «да» и «нет» ответов в порядке.
5.Change Порт для конечной точки приложения до 5200.
6. ockerFile и файлы .Dockerignore добавляются в рабочее пространство.
Анализируя Dockerfile
Давайте пройдем через этот докер вместе. Я добавил комментарии над строкой для простого понимания.
Откройте файл DockerFile.
Используйте ENV-инструкцию, чтобы добавить переменную среды на изображение контейнера обслуживания. Инструкция должна быть размещена на базовом этапе DockerFile (первый этап в файле). Установите переменную ASPNetCore_url на http://*: 5200:
Только базовое изображение последнего этапа, которое представляет собой изображение выполнения, будет включено в ваше изображение. Он похож на создание папки «Публикация на вашем компьютере» и опубликовать свою веб-API в эту папку. Вам нужно все остальные вещи, чтобы опубликовать веб-API. Но в действительности, это окончательная опубликованная папка, которую мы отправляем в развертывание.
Создайте изображение для DockerFile Вы только что создали
Откройте командный палитр (⇧⌘P) и используйте изображения Docker: CONGRABLE Image Command См. Фактическую команду сборки
Откройте Docker Explorer и убедитесь, что новое изображение видно в дереве изображений:
Запустите изображение в контейнере
Щелкните правой кнопкой мыши на изображении, созданном и нажмите «Запустить» или «Запустить интерактив». Контейнеры будут работать, и вы сможете увидеть его приложение Docker, как показано ниже. Что происходит под капотом, заключается в том, что Docker предоставляет контейнер для вашей системы для запуска изображения Docker. Таким образом, изображение на самом деле работает в контейнере Docker Daemon. Смотрите фактическую команду, если вы должны были запустить его из командной строки.
docker run --rm -d -p 5000:5200/tcp --name mytestWebApi testwebapi:latest
При запуске контейнера важно дать ему имя, чтобы вы могли легко обратиться к нему. Вы также можете получить доступ к контейнеру по его я бы.
Что делает эту команду, заключается в том, чтобы запустить этот документ Docker (TestWebAPI) с этим тегом (последним) и отображением входящего трафика в присвоенный вами порт докера (5200).
Флаг — (Rm) используется, когда вам нужен контейнер, который будет удален после того, как задача для нее завершена. Это подходит для небольших целей тестирования или POC и экономит головную боль для домашнего хозяйства.
Флаг- (D) означает, что контейнер должен быть отсоединен и может работать на фоне вашего терминала. Он не получает выход ввода или отображения. Если вы запускаете контейнеры на заднем плане, вы можете узнать их детали, используя (Docker PS), а затем подключите свой терминал на свой вход и вывод.
Флаг- (P) — это публиковать 5000 порт от хоста в контейнер к порту 5200 внутри контейнера. Это означает, что кто-либо соединяется с этим хостом по порту 5000, будет направляться в контейнер через порт 5200.
Флаг — (имя) используется для имени Назначение имени к контейнеру Docker.
Откройте веб-браузер и перейдите к http://localhost: 5200/WeatherForecast . Вы должны увидеть данные о погоде в формате JSON. .
Эти данные загружаются из вашего контейнера Docker. Если вы перестанете запустить контейнер, URL больше не может быть достигнут.
Docker Container LS — — покажет вам список всех контейнеров, работающих в вашей системе
Docker Container Stop [ID контейнера или зона контейнера] — можно использовать для того, чтобы остановить запуск контейнеров.
Вы можете получить полный список команд Docker здесь
Публикация вашего изображения в Dockerhub
DockerHub — это онлайн-хранилище для документов докера. Многие приложения и библиотеки доступны в виде изображений для скачивания, и вы можете опубликовать свои там.
Чтобы опубликовать докерное изображение, вы можете запустить эту команду
docker push [dockerId]/testwebapi:latest
Или нажмите на кнопку, используя поддержку докера, как показано на скриншоте ниже.
Вы можете войти в Dockerhub и просматривать свой образ докера.
Если другой разработчик в вашей команде нужен доступ к этому API, все, что им нужно сделать, это тянуть изображение, и у них есть точные webapi. Это также помогает легко масштабировать приложение к нескольким серверам.
В этой статье у нас есть
- Создано A.Net Core API
- Создал Dockerfile с помощью расширения Docker VSCode
- Создан, построенный и докер изображения,
- Управлял изображение Docker внутри контейнера Docker, а затем опубликовал наше изображение в Dockerhub.
В следующей статье мы будем развернуть наш ASP. Net Core Web API для Kubernetes.
Оригинал: «https://dev.to/gbengelebs/containerize-an-aspnet-core-application-with-docker-4cmo»