По всем вопросам- @notxxx1
Реестр РКН: https://clck.ru/3Fk3kb
#VRHSZ
Post #503
6.43K
📌 Встроенная поддержка контейнеров для .NET 7 — контейнеризация приложений .NET без Dockerfile
Основная идея
Каков общий рабочий процесс большинства программных приложений, особенно микросервисов?
Код → отправка в репозиторий → запуск конвейера непрерывной интеграции и непрерывного развертывания. Часть этого конвейера — этап сборки Docker, на котором из длинного Dockerfile обычно считываются данные и генерируются образы Docker для приложения. → И, наконец, развертывание образа в службе облачных вычислений.
Теперь не нужно сопровождать Dockerfile: образ генерируется самим фреймворком .NET и отправляется в выбранный репозиторий.
Далее мы узнаем, как собираются образы Docker при помощи инструментария интерфейса командной строки .NET, изучим предоставляемые им варианты, сравним с подходом Dockerfile и интегрируем в рабочий процесс Github Actions, продемонстрировав полезность этого для ваших проектов.
Сначала быстро рассмотрим контейнеризацию приложения .NET 6 с Dockerfile.
Создадим два простых приложения: dotnet6 и dotnet7. Поместим их код в папки одного репозитория. А в конце покажем, как это интегрировать с конвейером сборки и отправляемым, например, на DockerHub образом, и прямо в GitHub напишем простой рабочий процесс GitHub Actions.
Устанавливаем оба SDK-пакета и Docker Desktop:
▪️Первый.
▪️Второй.
▪️Docker Desktop.
Создаем на GitHub репозиторий, клонируем его на компьютер для локальной разработки, при помощи Visual Code открываем папку репозитория и добавляем здесь папку dotnet6.
Вот исходный код этой реализации.
Контейнеризация приложений .NET 6 — вкратце
В папке dotnet6 создаем простой веб-API проект HelloDocker на .NET 6, запуская команду dotnet интерфейса командной строки:
Здесь указывается на TargetFramework, то есть целевой фреймворк net6.0.
ПРОПУСТИТЕ ЭТУ ЧАСТЬ, ЕСЛИ УЖЕ ХОРОШО ЗНАЕТЕ КОНТЕЙНЕРИЗАЦИЮ ПРИЛОЖЕНИЙ ДО ВЕРСИИ .NET 6 ВКЛЮЧИТЕЛЬНО.
Это очень простой веб-API, которым возвращаются стандартные данные о погоде, подобный любому другому новому веб-API проекту по умолчанию на ASP.NET Core. Чтобы его контейнеризировать, до версии .NET 7 в корневой каталог проекта добавляли Dockerfile.
Совет: создав любое приложение dotnet, сразу очистить файл «launchSettings.json» и удалить все конфигурации, связанные со службами информационного сервера интернета IIS.
Так API всегда запустится на безопасном порте 7290 и HTTP-порте 5033. Внимание: только для запуска приложения на компьютере разработчика, а не в контейнере Docker.
По умолчанию, когда контейнер Docker развертывается с образом .NET, приложение запускается в http://+:80.
Чтобы переопределить его на другой номер порта в контейнере Docker, устанавливаем эту переменную окружения:
📌 Читать
@csharp_ci
Основная идея
Каков общий рабочий процесс большинства программных приложений, особенно микросервисов?
Код → отправка в репозиторий → запуск конвейера непрерывной интеграции и непрерывного развертывания. Часть этого конвейера — этап сборки Docker, на котором из длинного Dockerfile обычно считываются данные и генерируются образы Docker для приложения. → И, наконец, развертывание образа в службе облачных вычислений.
Теперь не нужно сопровождать Dockerfile: образ генерируется самим фреймворком .NET и отправляется в выбранный репозиторий.
Далее мы узнаем, как собираются образы Docker при помощи инструментария интерфейса командной строки .NET, изучим предоставляемые им варианты, сравним с подходом Dockerfile и интегрируем в рабочий процесс Github Actions, продемонстрировав полезность этого для ваших проектов.
Сначала быстро рассмотрим контейнеризацию приложения .NET 6 с Dockerfile.
Создадим два простых приложения: dotnet6 и dotnet7. Поместим их код в папки одного репозитория. А в конце покажем, как это интегрировать с конвейером сборки и отправляемым, например, на DockerHub образом, и прямо в GitHub напишем простой рабочий процесс GitHub Actions.
Устанавливаем оба SDK-пакета и Docker Desktop:
▪️Первый.
▪️Второй.
▪️Docker Desktop.
Создаем на GitHub репозиторий, клонируем его на компьютер для локальной разработки, при помощи Visual Code открываем папку репозитория и добавляем здесь папку dotnet6.
Вот исходный код этой реализации.
Контейнеризация приложений .NET 6 — вкратце
В папке dotnet6 создаем простой веб-API проект HelloDocker на .NET 6, запуская команду dotnet интерфейса командной строки:
dotnet new webapi --name HelloDocker --framework net6.0Здесь указывается на TargetFramework, то есть целевой фреймворк net6.0.
ПРОПУСТИТЕ ЭТУ ЧАСТЬ, ЕСЛИ УЖЕ ХОРОШО ЗНАЕТЕ КОНТЕЙНЕРИЗАЦИЮ ПРИЛОЖЕНИЙ ДО ВЕРСИИ .NET 6 ВКЛЮЧИТЕЛЬНО.
Это очень простой веб-API, которым возвращаются стандартные данные о погоде, подобный любому другому новому веб-API проекту по умолчанию на ASP.NET Core. Чтобы его контейнеризировать, до версии .NET 7 в корневой каталог проекта добавляли Dockerfile.
Совет: создав любое приложение dotnet, сразу очистить файл «launchSettings.json» и удалить все конфигурации, связанные со службами информационного сервера интернета IIS.
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"HelloDocker": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7290;http://localhost:5033",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Так API всегда запустится на безопасном порте 7290 и HTTP-порте 5033. Внимание: только для запуска приложения на компьютере разработчика, а не в контейнере Docker.
По умолчанию, когда контейнер Docker развертывается с образом .NET, приложение запускается в http://+:80.
Чтобы переопределить его на другой номер порта в контейнере Docker, устанавливаем эту переменную окружения:
📌 Читать
@csharp_ci













