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


Настройте пользовательский контейнер в Службе приложений Azure

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

Это краткое описание содержит основные понятия и инструкции для работы с контейнерами приложений Windows в Службе приложений. Новые пользователи Службы приложений Azure должны сначала ознакомиться с кратким руководством по пользовательскому контейнеру и пройти через учебное руководство.

Это краткое описание содержит основные понятия и инструкции для работы с контейнерами приложений Linux в Службе приложений. Если вы не знакомы со службой приложений Azure, сначала следуйте краткому руководству и руководству по пользовательскому контейнеру. For sidecar containers, see Tutorial: Configure a sidecar container for custom container in Azure App Service.

Примечание.

Service Principal is no longer supported for Windows container image pull authentication. We recommend that you use Managed Identity for both Windows and Linux containers

Поддерживаемые родительские образы

Для вашего пользовательского образа Windows выберите нужный родительский образ (базовый образ) для фреймворка, который вы хотите.

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

Изменение Docker-образа пользовательского контейнера

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

az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name <docker-hub-repo>/<image>

Использование образа из частного реестра

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

az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name <image-name> --docker-registry-server-url <private-repo-url> --docker-registry-server-user <username> --docker-registry-server-password <password>

Для <имени пользователя> и <пароля> укажите учетные данные для входа в учетную запись частного реестра.

Use managed identity to pull image from Azure Container Registry

Выполните следующие шаги, чтобы настроить веб-приложение для извлечения из Реестра контейнеров Azure (ACR) с использованием управляемого удостоверения. The steps use system-assigned managed identity. Вместо этого можно использовать управляемую личность, назначаемую пользователем.

  1. Включите системно назначаемое управляемое удостоверение для веб-приложения с помощью команды az webapp identity assign:

    az webapp identity assign --resource-group <group-name> --name <app-name> --query principalId --output tsv
    

    Замените <имя> приложения именем, которое вы использовали на предыдущем шаге. The output of the command, filtered by the --query and --output arguments, is the service principal ID of the assigned identity.

  2. Получите идентификатор ресурса Реестра контейнеров Azure:

    az acr show --resource-group <group-name> --name <registry-name> --query id --output tsv
    

    Замените <имя> реестра именем реестра. Выходные данные команды, отфильтрованные по аргументам --query и --output, это идентификатор ресурса Azure Container Registry.

  3. Предоставьте управляемой идентификации разрешение на доступ к реестру контейнеров.

    az role assignment create --assignee <principal-id> --scope <registry-resource-id> --role "AcrPull"
    

    Измените следующие значения:

    • <principal-id> with the service principal ID from the az webapp identity assign command
    • <registry-resource-id> with the ID of your container registry from the az acr show command

    Дополнительные сведения об этих разрешениях см. в статье Общие сведения об управлении доступом на основе ролей (RBAC) для ресурсов Azure.

  4. Настройте приложение для извлечения данных из Реестра контейнеров Azure с помощью управляемого удостоверения.

    az webapp config set --resource-group <group-name> --name <app-name> --generic-configurations '{"acrUseManagedIdentityCreds": true}'
    

    Измените следующие значения:

    • <имя> приложения с именем веб-приложения.

    Tip

    If you use PowerShell console to run the commands, escape the strings in the --generic-configurations argument in this step and the next step. Например: --generic-configurations '{\"acrUseManagedIdentityCreds\": true'

  5. (Необязательно) Если приложение использует управляемое удостоверение, назначаемое пользователем, убедитесь, что удостоверение настроено в веб-приложении, а затем задайте acrUserManagedIdentityID свойство, чтобы указать его идентификатор клиента:

    az identity show --resource-group <group-name> --name <identity-name> --query clientId --output tsv
    

    Replace the <identity-name> of your user-assigned managed identity and use the output <client-id> to configure the user-assigned managed identity ID.

    az  webapp config set --resource-group <group-name> --name <app-name> --generic-configurations '{"acrUserManagedIdentityID": "<client-id>"}'
    

Все готово! Теперь веб-приложение использует управляемое удостоверение для извлечения из реестра контейнеров Azure.

Использование образа из реестра, защищенного в сети

Чтобы подключиться к репозиторию и получить из него данные внутри виртуальной сети или локально, приложение должно интегрироваться с виртуальной сетью. Кроме того, требуется интеграция виртуальной сети для реестра контейнеров Azure с частной конечной точкой. After you configure your network and DNS resolution, enable the routing of the image pull through the virtual network by configuring the vnetImagePullEnabled site setting:

az resource update --resource-group <group-name> --name <app-name> --resource-type "Microsoft.Web/sites" --set properties.vnetImagePullEnabled [true|false]

Я не вижу обновленный контейнер

Если изменить параметры контейнера Docker, чтобы указать на новый контейнер, может потребоваться несколько минут, прежде чем приложение обслуживает HTTP-запросы из нового контейнера. Во время извлечения и запуска нового контейнера Служба приложений продолжит обслуживать запросы из старого контейнера. Служба приложений начинает отправлять запросы на новый контейнер только после его запуска и готовности к приему запросов.

Как хранятся образы контейнеров

The first time you run a custom Docker image in App Service, App Service does a docker pull and pulls all image layers. Эти слои хранятся на диске, например при использовании Docker в локальной среде. Each time the app restarts, App Service does a docker pull. It pulls only changed layers. Если изменений нет, Служба приложений использует существующие слои на локальном диске.

If the app changes compute instances for any reason, such as scaling up and down the pricing tiers, App Service must pull down all layers again. The same is true if you scale out to add more instances. Существуют также редкие случаи, когда экземпляры приложения могут изменяться без операции масштабирования.

Настройка номера порта

По умолчанию служба приложений предполагает, что пользовательский контейнер прослушивает порт 80. Если контейнер прослушивает другой порт, настройте соответствующим образом параметр WEBSITES_PORT приложения в приложении Службы приложений. Его можно задать с помощью Cloud Shell. В Bash:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_PORT=8000

В PowerShell:

Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITES_PORT"="8000"}

В настоящее время Служба приложений позволяет контейнеру предоставлять для HTTP-запросов только один порт.

Настройка переменных среды

Настраиваемый контейнер может использовать переменные среды, которые необходимо предоставить внешним образом. Их можно передать с помощью Cloud Shell. В Bash:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings DB_HOST="myownserver.mysql.database.azure.com"

В PowerShell:

Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"DB_HOST"="myownserver.mysql.database.azure.com"}

При запуске приложения параметры приложения Службы приложений автоматически подставляются в процесс как переменные среды. Вы можете проверить переменные среды контейнера с помощью URL-адреса https://<app-name>.scm.azurewebsites.net/Env.

Если приложение использует образы из частного реестра или из Docker Hub, учетные данные для доступа к репозиторию сохраняются в переменных среды: DOCKER_REGISTRY_SERVER_URLDOCKER_REGISTRY_SERVER_USERNAMEи DOCKER_REGISTRY_SERVER_PASSWORD. Из-за угроз для безопасности приложению не предоставляется ни одно из этих зарезервированных имен переменных.

Для контейнеров на основе IIS или .NET Framework (4.0 или более поздней версии) учетные данные автоматически добавляются в System.ConfigurationManager службой App Service в качестве параметров приложения .NET и строк подключения. Для всех других языков или платформ они предоставляются в качестве переменных среды для процесса с одним из следующих префиксов:

  • APPSETTING_
  • SQLCONTR_
  • MYSQLCONTR_
  • SQLAZURECOSTR_
  • POSTGRESQLCONTR_
  • CUSTOMCONNSTR_

Этот метод работает как для приложений с одним контейнером, так и для приложений с несколькими контейнерами, где переменные среды указаны в файле docker-compose.yml.

Использование постоянного общего хранилища

Вы можете использовать каталог C:\home в файловой системе своего пользовательского контейнера для сохранения файлов между перезапусками и совместного доступа к ним в экземплярах. Каталог C:\home предоставляется для предоставления пользовательскому контейнеру доступа к постоянному хранилищу.

Если постоянное хранилище отключено, запись в каталог C:\home не сохраняется в перезапуске приложения или в нескольких экземплярах. Если постоянное хранилище включено, все записи в каталог C:\home сохраняются. Все экземпляры масштабируемого приложения могут получить к ним доступ. Все существующие файлы, уже имеющиеся в постоянном хранилище, когда контейнер начинает перезаписывать любое содержимое в каталоге C:\home контейнера.

Единственным исключением является каталог C:\home\LogFiles . В этом каталоге хранятся журналы контейнеров и приложений. Эта папка всегда сохраняется при перезапуске приложения, если ведение журнала приложений включено с параметром файловой системы , независимо от того, включено ли постоянное хранилище. Другими словами, включение или отключение постоянного хранилища не влияет на поведение ведения журнала приложений.

По умолчанию постоянное хранилище включено в пользовательских контейнерах Windows. Чтобы отключить его, задайте WEBSITES_ENABLE_APP_SERVICE_STORAGE для параметра приложения значение false с помощью Cloud Shell. В Bash:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=false

В PowerShell:

Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITES_ENABLE_APP_SERVICE_STORAGE"=false}

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

When persistent storage is disabled, writes to the /home directory aren't persisted across app restarts or across multiple instances. When persistent storage is enabled, all writes to the /home directory persist. Все экземпляры масштабируемого приложения могут получить к ним доступ. Any existing files already present on the persistent storage when the container starts overwrite any contents in the /home directory of the container.

The only exception is the /home/LogFiles directory. В этом каталоге хранятся журналы контейнеров и приложений. Эта папка всегда сохраняется при перезапуске приложения, если ведение журнала приложений включено с параметром файловой системы , независимо от того, включено ли постоянное хранилище. Другими словами, включение или отключение постоянного хранилища не влияет на поведение ведения журнала приложений.

Рекомендуется записывать данные в /home или подключенный путь к хранилищу Azure. Данные, записанные за пределами этих путей, не сохраняются во время перезапуска. Данные сохраняются в дисковом пространстве узла, управляемом платформой, отдельно от квоты хранилища файлов службы приложений.

По умолчанию постоянное хранилище отключено в пользовательских контейнерах Linux. Чтобы включить его, задайте WEBSITES_ENABLE_APP_SERVICE_STORAGE для параметра приложения значение true с помощью Cloud Shell. В Bash:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=true

В PowerShell:

Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITES_ENABLE_APP_SERVICE_STORAGE"=true}

Примечание.

Вы также можете настроить собственное постоянное хранилище.

Обнаружение сеанса HTTPS

Служба приложений завершает TLS на фронтенде. Это означает, что запросы TLS никогда не попадают в приложение. Вам не нужно и не следует реализовывать поддержку TLS в приложении.

Фронтенды расположены внутри центров обработки данных Azure. Если вы используете TLS с приложением, ваш трафик через Интернет всегда безопасно зашифрован.

Customize ASP.NET machine key injection

Во время запуска контейнера в него вставляются автоматически созданные ключи в качестве ключей компьютера для подпрограмм шифрования ASP.NET. Эти ключи можно найти в контейнере в следующих переменных среды: MACHINEKEY_Decryption, MACHINEKEY_DecryptionKey, MACHINEKEY_ValidationKey, MACHINEKEY_Validation.

The new keys at each restart might reset ASP.NET forms authentication and view state, if your app depends on them. Чтобы предотвратить автоматическое повторное создание ключей, задайте их вручную в качестве параметров приложения Службы приложений.

Подключение к контейнеру

Чтобы подключиться к контейнеру Windows непосредственно для задач диагностики, перейдите https://<app-name>.scm.azurewebsites.net/ к нему и выберите параметр SSH. Этот параметр устанавливает прямой сеанс SSH, в котором можно выполнять команды внутри контейнера.

  • Она работает отдельно от графического браузера над ним, в котором отображаются только файлы в общем хранилище.
  • В масштабируемом приложении сеанс SSH подключается к одному из экземпляров контейнера. Вы можете выбрать другой экземпляр из раскрывающегося списка экземпляров в верхнем меню Kudu.
  • За исключением изменений в общем хранилище, все изменения, внесенные в контейнер из сеанса SSH, не сохраняются при перезапуске приложения. Такие изменения не являются частью образа Docker. Чтобы сохранить такие изменения, как правки в параметрах реестра и установка программного обеспечения, сделайте их частью файла Dockerfile.

Доступ к журналам диагностики

Служба приложений ведет журнал действий Docker-хоста и активности внутри контейнера. Журналы из узла Docker (журналы платформы) включены по умолчанию. Необходимо вручную включить журналы приложений или журналы веб-сервера из контейнера. Дополнительные сведения см. в разделах Включение журнала приложений и Включение журнала веб-сервера.

Получить доступ к журналам Docker можно несколькими способами:

На портале Azure

Журналы Docker отображаются на портале Azure на странице параметров контейнера приложения. The logs are truncated. Чтобы скачать все журналы, нажмите кнопку "Скачать".

Из Kudu

Чтобы просмотреть отдельные файлы журналов, перейдите https://<app-name>.scm.azurewebsites.net/DebugConsole к папке LogFiles и выберите ее. Чтобы скачать весь каталог LogFiles , щелкните значок скачивания слева от имени каталога. Доступ к этой папке также можно получить с помощью FTP-клиента.

В терминале SSH невозможно получить доступ к папке C:\home\LogFiles по умолчанию, так как постоянное общее хранилище не включено. Чтобы включить такое поведение в консольном терминале, активируйте постоянное общее хранилище.

Если вы пытаетесь скачать журнал Docker, который в настоящее время используется с помощью FTP-клиента, может возникнуть ошибка из-за блокировки файла.

С помощью API Kudu

Перейдите непосредственно на страницу https://<app-name>.scm.azurewebsites.net/api/logs/docker, чтобы просмотреть метаданные для журналов Docker. You might see more than one log file listed. Свойство href позволяет скачать файл журнала напрямую.

Чтобы скачать сразу все журналы в одном ZIP-файле, откройте страницу https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip.

Настройка памяти контейнера

По умолчанию все контейнеры Windows, развернутые в Службе приложений Azure, имеют ограничение памяти. В следующей таблице перечислены параметры по умолчанию для каждого SKU плана Службы приложений.

App Service Plan SKU Ограничение памяти по умолчанию для каждого приложения в МБ
P1v3 1024
P1Mv3 1024
P2v3 1536
P2Mv3 1536
P3v3 2048
P3Mv3 2048
P4Mv3 2560
P5Mv3 3072

Это значение можно изменить, указав WEBSITE_MEMORY_LIMIT_MB параметр приложения с помощью Cloud Shell. В Bash:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITE_MEMORY_LIMIT_MB=2000

В PowerShell:

Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITE_MEMORY_LIMIT_MB"=2000}

Значение определяется в МБ и должно быть не больше общего объема физической памяти узла. Например, в плане службы приложений с 8 ГБ ОЗУ совокупная сумма WEBSITE_MEMORY_LIMIT_MB для всех приложений не должна превышать 8 ГБ. Дополнительные сведения о доступном объеме памяти см. в разделе плана службы "Премиум" версии 3в ценах на службу приложений.

Настройка количества вычислительных ядер

По умолчанию контейнер Windows выполняется со всеми доступными ядрами для выбранной ценовой категории. You might want to reduce the number of cores that your staging slot uses. Чтобы уменьшить количество ядер, используемых контейнером, задайте в параметре WEBSITE_CPU_CORES_LIMIT приложения нужное число ядер. Его можно задать с помощью Cloud Shell. В Bash:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --slot staging --settings WEBSITE_CPU_CORES_LIMIT=1

В PowerShell:

Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITE_CPU_CORES_LIMIT"=1}

Tip

Обновление параметра приложения активирует автоматическую перезагрузку, что приводит к минимальному простою. For a production app, consider swapping it into a staging slot, change the app setting in the staging slot, and then swap it back into production.

Чтобы проверить измененный номер, откройте сеанс SSH на портале Azure или используйте портал Kudu (https://<app-name>.scm.azurewebsites.net/webssh/host). Введите следующие команды с помощью PowerShell. Каждая команда возвращает число.

Get-ComputerInfo | ft CsNumberOfLogicalProcessors # Total number of enabled logical processors. Disabled processors are excluded.
Get-ComputerInfo | ft CsNumberOfProcessors # Number of physical processors.

Процессоры могут быть многоядерными или гиперпоточными процессорами. Сведения о том, сколько ядер доступно, см. в разделе плана обслуживания Premium версии 3, цен на службу приложений.

Customize health ping behavior

Служба приложений считает, что контейнер успешно запущен, если он запускается и отвечает на HTTP-сигнал. The health ping request contains the header User-Agent= "App Service Hyper-V Container Availability Check". Если контейнер запускается, но не отвечает на запросы через определенное время, служба приложений регистрирует событие в журнале Docker.

Если ваше приложение потребляет много ресурсов, контейнер может не успеть ответить на HTTP-пинг вовремя. To control the actions when HTTP pings fail, set the CONTAINER_AVAILABILITY_CHECK_MODE app setting. Его можно задать с помощью Cloud Shell. В Bash:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings CONTAINER_AVAILABILITY_CHECK_MODE="ReportOnly"

В PowerShell:

Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"CONTAINER_AVAILABILITY_CHECK_MODE"="ReportOnly"}

В таблице ниже приведены возможные значения.

Значение Описания
Ремонт Перезапустите контейнер после трех последовательных проверок доступности.
ReportOnly Значение по умолчанию. Контейнер не перезапускается, но в журналы Docker для него добавляется соответствующее событие после трех последовательных проверок доступности.
Выкл. Доступность не проверяется.

Поддержка групповых управляемых сервисных учетных записей

Групповые управляемые учетные записи служб (gMSA) в настоящее время не поддерживаются в контейнерах Windows в Службе приложений.

Включение SSH

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

  1. Создайте стандартный sshd_config файл со следующим содержимым и поместите его в корневой каталог проекта приложения:

    Port 			2222
    ListenAddress 		0.0.0.0
    LoginGraceTime 		180
    X11Forwarding 		yes
    Ciphers aes128-cbc,3des-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr
    MACs hmac-sha1,hmac-sha1-96
    StrictModes 		yes
    SyslogFacility 		DAEMON
    PasswordAuthentication 	yes
    PermitEmptyPasswords 	no
    PermitRootLogin 	yes
    Subsystem sftp internal-sftp
    

    Примечание.

    Этот файл настраивает OpenSSH и должен включать следующие элементы, чтобы обеспечить соответствие функции SSH портал Azure:

    • Для параметра Port должно быть установлено значение 2222.
    • Ciphers должен содержать по крайней мере один элемент в этом списке: aes128-cbc,3des-cbc,aes256-cbc.
    • MACs должен содержать по крайней мере один элемент в этом списке: hmac-sha1,hmac-sha1-96.
  2. Создайте скрипт точки входа с именем entrypoint.sh или измените существующий файл точки входа. Добавьте команду, чтобы запустить службу SSH, а также команду запуска приложения. В следующем примере показано, как запустить приложение Python. Замените последнюю команду в соответствии с языком проекта или стеком:

    #!/bin/sh
    set -e
    service ssh start
    exec gunicorn -w 4 -b 0.0.0.0:8000 app:app
    
  3. Добавьте в Dockerfile следующие инструкции в соответствии с распределением базового образа. Эти инструкции копируют новые файлы, устанавливают сервер OpenSSH, задают правильные разрешения и настраивают настраиваемую точку входа и предоставляют порты, необходимые для сервера приложений и SSH соответственно:

    COPY entrypoint.sh ./
    
    # Start and enable SSH
    RUN apt-get update \
        && apt-get install -y --no-install-recommends dialog \
        && apt-get install -y --no-install-recommends openssh-server \
        && echo "root:Docker!" | chpasswd \
        && chmod u+x ./entrypoint.sh
    COPY sshd_config /etc/ssh/
    
    EXPOSE 8000 2222
    
    ENTRYPOINT [ "./entrypoint.sh" ] 
    

    Примечание.

    Корневой пароль должен быть именно Docker! потому, что он используется службой приложений для доступа к сеансу SSH с контейнером. Эта конфигурация не допускает внешние подключения к контейнеру. Порт 2222 контейнера доступен только в сети моста частной виртуальной сети и недоступен злоумышленнику в Интернете.

  4. Перестройте и отправьте образ Docker в реестр, а затем проверьте функцию SSH веб-приложения на портале Azure.

Дополнительные сведения об устранении неполадок см. в блоге службы приложений Azure: включение SSH в веб-приложении Linux для контейнеров

Доступ к журналам диагностики

Вы можете получить доступ к журналам консоли, генерируемым внутри контейнера.

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

az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem

Замените #D0 и #D1 именами, подходящими для веб-приложения.

После включения ведения журнала контейнеров выполните следующую команду, чтобы просмотреть поток журналов:

az webapp log tail --name <app-name> --resource-group <resource-group-name>

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

To stop log streaming at any time, select Ctrl+C.

Вы также можете проверить файлы журнала в браузере на странице https://<app-name>.scm.azurewebsites.net/api/logs/docker. For recently created apps, use https://<app-name>-<random-hash>.scm.<region>.azurewebsites.net/.

Настройка приложений с несколькими контейнерами

Примечание.

The Docker Compose feature will be retired on March 31, 2027. Sidecar containers succeed multi-container apps in App Service. For new services, refer to Tutorial: Configure a sidecar container for custom container in Azure App Service. For existing multi-container apps in App Service, refer to Migrating your Docker Compose applications to the Sidecar feature.

Использование постоянного хранилища в Docker Compose

Для правильной работы приложений с несколькими контейнерами, таких как WordPress, требуется постоянное хранилище. Для его включения в конфигурации Docker Compose должно быть указано место хранения за пределами контейнера. Изменения в местах хранения внутри контейнера не сохраняются после перезапуска приложения.

Чтобы включить постоянное хранилище, задайте WEBSITES_ENABLE_APP_SERVICE_STORAGE параметр приложения. Используйте команду az webapp config appsettings set в Cloud Shell.

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=TRUE

В файле docker-compose.yml сопоставьте параметр volumes с ${WEBAPP_STORAGE_HOME}.

WEBAPP_STORAGE_HOME — это переменная среды в Службе приложений, которая сопоставляется с постоянным хранилищем для вашего приложения. Например:

wordpress:
  image: <image name:tag>
  volumes:
  - "${WEBAPP_STORAGE_HOME}/site/wwwroot:/var/www/html"
  - "${WEBAPP_STORAGE_HOME}/phpmyadmin:/var/www/phpmyadmin"
  - "${WEBAPP_STORAGE_HOME}/LogFiles:/var/log"

Ограничения предварительной версии

Multi-container is currently in preview. Следующие функции платформы Служба приложений не поддерживаются.

  • Проверка подлинности/авторизация
  • Managed Identities
  • CORS
  • Интеграция виртуальной сети не поддерживается для сценариев Docker Compose.
  • Для Docker Compose в Службах приложений Azure сейчас настроено ограничение в 4000 символов.

Docker Compose options

В следующих списках приведены поддерживаемые и неподдерживаемые параметры конфигурации Docker Compose.

Поддерживаемые параметры

Неподдерживаемые параметры

  • build (not allowed)
  • depends_on (ignored)
  • сети (игнорируется)
  • секреты (игнорируются)
  • порты, отличные от 80 и 8080 (игнорируются).
  • переменные среды по умолчанию, такие как $variable and ${variable}, в отличие от переменных в Docker

Ограничения синтаксиса

  • "version x.x" всегда должна быть первой инструкцией YAML в файле
  • ports section must use quoted numbers
  • image > volume section must be quoted and can't have permissions definitions
  • Раздел volumes не должен иметь пустую фигурную скобку после имени тома

Примечание.

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

Ignore the robots933456 message in logs

В журналах контейнеров может появиться следующее сообщение:

2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"

Это сообщение можно проигнорировать. /robots933456.txt — это фиктивный URL-путь, с помощью которого Служба приложений проверяет, может ли контейнер обслуживать запросы. Ответ 404 указывает, что путь не существует, и он сигнализирует службе приложений о том, что контейнер работоспособен и готов реагировать на запросы.

Кроме того, ознакомьтесь с дополнительными ресурсами: