Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как создать и развернуть приложение в приложениях контейнеров Azure из исходного кода на компьютере на предпочитаемом языке программирования.
Изучив этот учебник, вы:
- Создайте простое веб-приложение.
- Создайте связанный файл Dockerfile для приложения.
- Создайте образ из скомпилированного кода и отправьте его в реестр контейнеров.
- Используйте управляемое удостоверение для безопасного доступа к реестру контейнеров.
- Разверните контейнер в приложениях контейнеров Azure.
- Просмотрите приложение в браузере, чтобы проверить развертывание.
Чтобы завершить этот проект, вам потребуется следующее:
Требование | Instructions |
---|---|
Учетная запись Azure | Если у вас нет учетной записи, создайте бесплатную учетную запись. Чтобы продолжить, вам потребуется разрешение участника или владельца подписки Azure. Дополнительные сведения см. в статье "Назначение ролей Azure" с помощью портал Azure. |
Azure CLI |
Установите Azure CLI или обновите ее до последней версии. Интерфейс командной строкиazd разработчика Azure (команды) доступен через Azure CLI. |
В зависимости от выбранного языка также может потребоваться установить соответствующую среду выполнения, пакет SDK и другие зависимости.
Установите пакет SDK для .NET.
В следующих шагах показано, как код и зависимости, необходимые для создания примера приложения для развертывания в приложениях контейнеров Azure.
Примечание
Если вы хотите использовать другой язык, отличный от перечисленных, введите следующий запрос в предпочитаемую модель ИИ.
Перед отправкой запроса замените <LANGUAGE>
выбранным языком.
Generate the simplest possible "hello world" web server in idiomatic <LANGUAGE>.
Make sure to include any dependencies required for the application to run locally and in production.
Создайте и запустите исходный код.
Создайте проект C#.
dotnet new webapp --name MyAcaDemo --language C#
Перейдите в папку MyAcaDemo .
cd MyAcaDemo
Откройте
Program.cs
в редакторе кода и замените содержимое следующим кодом.public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); webBuilder.UseUrls("http://*:8080"); }); }
Program
Реализация класса с помощью этого кода создает основу веб-приложения. Затем создайте класс, ответственный за возврат веб-страницы в качестве ответа.В той же папке создайте новый файл с именем
Startup.cs
и введите следующий код.public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Hello World!"); }); }); } }
Теперь, когда запрос выполняется в веб-приложение, возвращается текст "Hello World!". Чтобы убедиться, что код работает правильно на локальном компьютере, создайте проект в конфигурации выпуска.
dotnet build -c Release
Затем запустите приложение, чтобы убедиться, что код реализован правильно.
dotnet run --configuration Release
Убедившись, что приложение работает должным образом, можно остановить локальный сервер и перейти к созданию Dockerfile, чтобы развернуть приложение в контейнерных приложениях.
В папке MyAcaDemo создайте файл с именем
Dockerfile
и добавьте следующее содержимое.FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY . . RUN dotnet publish -c Release -o /app/publish FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final WORKDIR /app COPY --from=build /app/publish . EXPOSE 8080 ENTRYPOINT ["dotnet", "MyAcaDemo.dll"]
Теперь, когда у вас есть код и файл Dockerfile, вы можете развернуть приложение в приложениях контейнеров Azure.
Войдите в Azure из ИНТЕРФЕЙСА командной строки с помощью следующей команды. Чтобы завершить процесс проверки подлинности, обязательно следуйте всем запросам.
az login
Установите или обновите расширение приложений контейнеров Azure для Azure CLI.
az extension add --name containerapp --upgrade
Примечание
Если при выполнении
az containerapp
команд возникают ошибки, связанные с отсутствующими параметрами, убедитесь, что установлена последняя версия расширения приложений контейнеров Azure.После завершения установки Azure CLI можно определить набор переменных среды.
Перед выполнением следующей команды просмотрите указанные значения.
Расположение настроено как центральная часть США, но вы можете изменить расположение, ближайшее к вам, если вы предпочитаете.
LOCATION="CentralUS" RESOURCE_GROUP="my-demo-group" IDENTITY_NAME="my-demo-identity" ENVIRONMENT="my-demo-environment" REGISTRY_NAME="mydemoregistry$(openssl rand -hex 4)" CONTAINER_APP_NAME="my-demo-app"
Команда
mydemoregistry$(openssl rand -hex 4)
создает случайную строку для использования в качестве имени реестра контейнеров. Имена реестра должны быть глобально уникальными, поэтому эта строка помогает обеспечить успешное выполнение команд.Создайте группу ресурсов для упорядочивания служб, связанных с развертыванием приложения контейнера.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --output none
Создайте управляемое удостоверение, назначаемое пользователем, и получите его идентификатор со следующими командами.
Сначала создайте управляемое удостоверение.
az identity create \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --output none
Теперь задайте идентификатор удостоверения в переменную для последующего использования.
IDENTITY_ID=$(az identity show \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Создайте среду "Приложения контейнеров" для размещения приложения с помощью следующей команды.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --mi-user-assigned $IDENTITY_ID \ --output none
Создайте экземпляр Реестр контейнеров Azure (ACR) в группе ресурсов. Реестр хранит образ контейнера.
az acr create \ --resource-group $RESOURCE_GROUP \ --name $REGISTRY_NAME \ --sku Basic \ --output none
Назначьте управляемое удостоверение, назначаемое пользователем, экземпляру реестра контейнеров с помощью следующей команды.
az acr identity assign \ --identities $IDENTITY_ID \ --name $REGISTRY_NAME \ --resource-group $RESOURCE_GROUP \ --output none
Создайте и отправьте образ контейнера в экземпляр реестра контейнеров с помощью следующей команды.
az acr build \
-t $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
-r $REGISTRY_NAME .
Эта команда применяет тег helloworld
к образу контейнера.
Создайте приложение-контейнер с помощью следующей команды.
az containerapp create \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
--target-port 8080 \
--ingress external \
--user-assigned $IDENTITY_ID \
--registry-identity $IDENTITY_ID \
--registry-server $REGISTRY_NAME.azurecr.io \
--query properties.configuration.ingress.fqdn
Эта команда добавляет роль в acrPull
управляемое удостоверение, назначаемое пользователем, поэтому она может извлекать образы из реестра контейнеров.
В следующей таблице описываются параметры, используемые этой командой.
Параметр | Стоимость | Описание |
---|---|---|
name |
$CONTAINER_APP_NAME |
Имя приложения-контейнера. |
resource-group |
$RESOURCE_GROUP |
Группа ресурсов, в которой развернуто приложение контейнера. |
environment |
$ENVIRONMENT |
Среда, в которой выполняется приложение контейнера. |
image |
$REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" |
Образ контейнера для развертывания, включая имя реестра и тег. |
target-port |
80 |
Соответствует порту, которому приложение прослушивает запросы. |
ingress |
external |
Делает приложение-контейнер доступным из общедоступного Интернета. |
user-assigned |
$IDENTITY_ID |
Управляемое удостоверение, назначаемое пользователем для приложения контейнера. |
registry-identity |
registry-identity |
Удостоверение, используемое для доступа к реестру контейнеров. |
registry-server |
$REGISTRY_NAME.azurecr.io |
Адрес сервера реестра контейнеров. |
query |
properties.configuration.ingress.fqdn |
Фильтрует выходные данные только для полного доменного имени приложения (FQDN). |
После завершения этой команды он возвращает URL-адрес для нового веб-приложения.
Скопируйте URL-адрес приложения в веб-браузер. После запуска приложения-контейнера он возвращает Hello World!.
Так как это первый раз, когда приложение обращается, может потребоваться несколько минут для возврата ответа.
Если вы не собираетесь использовать ресурсы Azure, созданные в этом руководстве, их можно удалить с помощью одной команды. Перед выполнением команды в этой серии руководств описано, как внести изменения в код и обновить приложение в Azure.
Если вы закончите и хотите удалить все ресурсы Azure, созданные в этом руководстве, удалите группу ресурсов с помощью следующей команды.
az group delete --name aca-demo
Совет
Возникли проблемы? Сообщите о них в репозитории Azure Container Apps на GitHub.
Далее перейдите к сведениям об обновлении созданного приложения контейнера.