КОДЕКС
Контейнеризация основных приложений 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 сегодня же!
Ознакомьтесь с моими недавними статьями.