КОДЕКС

Контейнеризация основных приложений Dotnet с помощью Docker

За последние пару лет я стал абсолютно одержим упаковкой своих приложений в контейнеры с помощью Docker. Причина этого в том, что Docker значительно упрощает жизнь и позволяет мне очень быстро развертывать приложения. Это также помогает гарантировать, что мои приложения не связаны исключительно с какой-либо инфраструктурой, что позволяет мне развертывать эти приложения практически в любом месте. Недавно я работал над приложением C #, которое извлекает некоторые данные из базы данных и обрабатывает их. Естественно, мне стало любопытно, как можно обернуть это приложение.

Dockerfiles

При контейнеризации приложения с помощью Docker первое, что вам нужно сделать, это создать Dockerfile. Этот файл будет содержать инструкции, необходимые для сборки и создания образа Docker. Для простоты наш файл будет выглядеть так:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1
COPY bin/Release/netcoreapp3.1/publish/ App/
WORKDIR /App
ENTRYPOINT ["dotnet", "Runner.dll"]

Переход к командной строке

Теперь, когда у нас есть Dockerfile, мы можем запускать команды для создания контейнера. Сначала перейдите в каталог проекта вашего консольного приложения C #. Оказавшись там, запустите эту команду:

dotnet publish -c Release

| Примечание. Эту первую команду можно было запустить внутри файла Dockerfile, но я решил выделить ее в отдельный шаг.

По сути, эта команда создает выпуск для приложения C #. В Dockerfile мы указываем, где находится этот выпуск, чтобы помочь построить контейнер. Следующая команда, которую необходимо выполнить, создаст образ Docker для нашего приложения.

sudo docker build -t runner-image -f Dockerfile .

Как я уже упоминал, эта команда создаст образ. В двух словах, изображение - это просто шаблон, содержащий инструкции по созданию контейнера. При создании вы должны получить результат, подобный следующему:

Чтобы убедиться, что образ был создан, запустите это:

sudo docker images

После создания образа используйте эту команду:

sudo docker create --name runner-container runner-image

Вот результат, аналогичный тому, что вы получите:

Чтобы увидеть, что контейнер был создан, выполните эту команду:

sudo docker ps -a

С созданным контейнером последний шаг - запустить его. Этого можно добиться с помощью:

sudo docker start runner-container

Чтобы убедиться, что контейнер выполнен, снова выполните следующую команду и проверьте столбец СОСТОЯНИЕ:

sudo docker ps -a

Последний шаг - посмотреть, что на самом деле было напечатано. Используя имя моего контейнера, мы можем использовать эту команду, чтобы увидеть этот вывод.

sudo docker logs <container-name>

Заключение

Докер действительно был революционной технологией. Возможность контейнеризации приложений экономит время и ресурсы. Даже удивительно, что мы можем использовать его в приложениях Microsoft (еще несколько лет назад об этом никому бы не приходило в голову). Если вы еще этого не сделали, я рекомендую вам попробовать Docker. Пока мы снова не поболтаем, ура!

Читайте все мои статьи бесплатно с помощью моего еженедельного информационного бюллетеня, спасибо!

Хотите читать все статьи на Medium? Станьте участником Medium сегодня же!

Ознакомьтесь с моими недавними статьями.