Поделиться через


Руководство. Обновление приложения-контейнера, развернутого из исходного кода

В этой статье показано, как обновить приложение контейнера, созданное в предыдущей статье, создание и развертывание исходного кода в приложениях контейнеров Azure.

Если вы не выполнили действия, описанные в предыдущей статье, остановите эту статью и вернитесь к этой статье после выполнения всех действий.

Изучив этот учебник, вы:

  • Внесите изменения кода в приложение.
  • Отправьте изменения в реестр контейнеров с новым тегом.
  • Просмотр обновленного приложения в браузере.
  • Запросите поток журнала для просмотра зарегистрированных сообщений.

Необходимые компоненты

Чтобы завершить этот проект, вам потребуются средства, ресурсы и приложение контейнера, созданные в предыдущем руководстве, сборка и развертывание из исходного кода в приложения контейнеров Azure.

Настройка

  1. При необходимости войдите в Azure из CLI.

    az login
    
  2. Создайте переменные среды. Если переменные среды из последнего руководства по-прежнему существуют в терминале, этот шаг можно пропустить.

    Если необходимо повторно создать переменные среды, сначала необходимо запросить имя реестра контейнеров, созданное в последней статье.

    Выполните следующую команду, чтобы запросить реестр контейнеров, созданный в последнем руководстве.

    az acr list --query "[].{Name:name}" --output table
    

    После получения имени реестра контейнеров замените <REGISTRY_NAME> его именем реестра и выполните следующую команду.

    RESOURCE_GROUP="my-demo-group"
    CONTAINER_APP_NAME="my-demo-app"
    REGISTRY_NAME="<REGISTRY_NAME>"
    
  3. Обновите и запустите исходный код.

    Замените все содержимое Startup.cs следующим кодом:

    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
        }
    
        public void Configure(IApplicationBuilder app, ILogger<Startup> logger)
        {
            app.UseRouting();
    
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    logger.LogInformation("Hello Logger!");
                    await context.Response.WriteAsync("Hello Logger!");
                });
            });
        }
    }
    

    Эта версия кода регистрирует средство ведения журнала для записи сведений в консоль и поток журналов приложений контейнеров.

    Создайте проект в конфигурации выпуска.

    dotnet build -c Release
    

    Затем запустите приложение, чтобы убедиться, что код реализован правильно.

    dotnet run --configuration Release
    

Создание и отправка образа в реестр

Теперь, когда код обновлен, вы можете отправить последнюю версию в реестр контейнеров в качестве нового образа.

Чтобы убедиться, что тег, используемый для реестра, является уникальным, используйте следующую команду, чтобы создать имя тега.

IMAGE_TAG=$(date +%s)

Теперь вы можете создать и отправить новый образ контейнера в реестр с помощью следующей команды.

az acr build \
    -t $REGISTRY_NAME.azurecr.io/$CONTAINER_APP_NAME:$IMAGE_TAG \
    -r $REGISTRY_NAME .

Создание новой редакции

Вы можете создать новую редакцию приложения-контейнера на основе нового образа контейнера, отправленного в реестр.

az containerapp revision copy \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --image "$REGISTRY_NAME.azurecr.io/$CONTAINER_APP_NAME:$IMAGE_TAG" \
  --output none

Команда revision copy создает новую редакцию приложения контейнера с указанным образом контейнера из реестра.

Проверка развертывания

Теперь, когда приложение развернуто, можно запросить URL-адрес с помощью этой команды.

az containerapp show \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --query properties.configuration.ingress.fqdn -o tsv

В веб-браузере перейдите по URL-адресу приложения. После запуска приложения-контейнера он выводит Hello Logger!.

Поток журнала запросов

Вы только что видели выходные данные, отправленные в браузер, поэтому теперь можно использовать следующую команду, чтобы просмотреть сообщения, зарегистрированные в потоке журналов.

az containerapp logs show \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --follow

Запрос возвращает ответ, аналогичный следующему примеру:

{"TimeStamp", "xxxx", "Log": "info: Microsoft.Hosting.Lifetime[0]"}
{"TimeStamp", "xxxx", "Log": "Hosting environment: Production"}
{"TimeStamp", "xxxx", "Log": "info: Microsoft.Hosting.Lifetime[0]"}
{"TimeStamp", "xxxx", "Log": "Content root path: /app"}
{"TimeStamp", "xxxx", "Log": "info: Startup[0]"}
{"TimeStamp", "xxxx", "Log": "Hello Logger!""}

Обратите внимание, как можно увидеть сообщение Hello Logger! в потоке.

Чтобы остановиться после потока, можно ввести cmd/CTRL + C , чтобы завершить сообщения.

Очистка ресурсов

Если вы не собираетесь использовать ресурсы Azure, созданные в этом руководстве, их можно удалить с помощью следующей команды.

az group delete --name my-demo-group

Совет

Возникли проблемы? Сообщите о них в репозитории Azure Container Apps на GitHub.

Следующие шаги

Узнайте, как подключиться к службам в приложениях контейнеров Azure.