Служба приложений Azure с использованием контейнеров: когда обновляется контейнер?

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

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

Я предполагаю, что если можно контролировать обновления (особенно с заменой слотов), тег в siteconfig / linux_fx_version может быть установлен на последний. Если его невозможно контролировать (например, обновления контейнера могут происходить в случайное время), лучшим вариантом является использование явных тегов версии и их обновление при каждом развертывании.

Я не уверен, что мое предположение верно.

Уменьшенный пример моего соответствующего кода терраформирования:

resource "azurerm_app_service" "example" {
  name                = "example"
  resource_group_name       = "example"
  location                  = ..
  app_service_plan_id = "example"

  app_settings = local.env_vars

  site_config {
    linux_fx_version = "DOCKER|someimage:latest"
  }

}

resource "azurerm_app_service_slot" "staging" {
  name                       = "staging"
  location                   = ..
  resource_group_name        = "example"
  app_service_plan_id        = "example"

  app_settings = local.env_vars

  site_config {
    linux_fx_version = "DOCKER|someimage:latest"
  }

}

person stena    schedule 14.01.2021    source источник
comment
Вы все еще работаете над этим вопросом? Я не получил никакого ответа, и вы тоже не принимаете его.   -  person Charles Xu    schedule 25.01.2021
comment
Я все еще экспериментирую с этим. Спасибо за ссылку, которая помогла мне понять основное предложение о непрерывном развертывании. Я также нашел еще один, не рекомендующий общие теги, например latest: docs.microsoft.com/en-us/azure/app-service/. Тем не менее я не ответил на все вопросы (когда может произойти обновление и как его можно предотвратить), поэтому мне все еще нужны биты для правильного ответа. :)   -  person stena    schedule 26.01.2021
comment
Что вы имеете в виду под «предотвращенным»? Насколько я понимаю, вы хотите обновить изображение веб-приложения при изменении базового изображения, я прав?   -  person Charles Xu    schedule 26.01.2021
comment
Учитывая, что у меня есть приложение и слот, и оба указывают на последний тег. Затем я отправляю версию контейнера, которую хочу протестировать при постановке. Поэтому я бы обновил промежуточный слот до последней версии, помеченной как последняя. Когда он будет развернут и будет успешно протестирован, я хотел бы заменить его производственным. Я хочу предотвратить то, что когда и основное веб-приложение для производства, и промежуточный слот указывают на последнюю версию, веб-приложение для производства также параллельно загружает более новую версию последней. Я понимаю, что это противоречит рекомендуемой передовой практике. Тем не менее я не знаю, могло ли это случиться.   -  person stena    schedule 26.01.2021
comment
Смотрите обновления. Может быть, это вам поможет.   -  person Charles Xu    schedule 26.01.2021
comment
Спасибо. Я проголосовал за и принял ответ.   -  person stena    schedule 26.01.2021
comment
Я рад, что это тебе поможет :-)   -  person Charles Xu    schedule 26.01.2021


Ответы (1)


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

Обновление:

Непрерывное развертывание - это настройка для одного веб-приложения. Если вы просто создаете слот для производства в существующем веб-приложении, которое будет извлекать новое изображение при изменении изображения, новое изображение также повлияет на производство. Я рекомендую вам создать новое веб-приложение для производства с правильным изображением, выделенным в тесте.

person Charles Xu    schedule 21.01.2021