設定 Azure App Service 的自訂容器

本文說明如何設定自訂容器,並在 Azure App Service 上執行。

本指南提供 App Service 中 Windows 應用程式容器化的重要概念和簡介。 新的 Azure App 服務 用戶應該先遵循自定義容器快速入門教學課程

本指南提供 App Service 中 Linux 應用程式容器化的重要概念和簡介。 如果不熟悉 Azure App 服務,請先遵循自定義容器快速入門教學課程。 此外,我們也提供多容器應用程式快速入門教學課程。 如需 Sidecar 容器 (預覽),請參閱教學課程:在 Azure App 服務 中設定自定義容器的 Sidecar 容器(預覽版)。

注意

Windows 容器映像提取驗證不再支援服務主體。 建議的方法是針對 Windows 和 Linux 容器使用受控識別

支援的父映像

針對自訂 Windows 映像,您必須為所需架構選擇正確的父映像 (基礎映像)

  • 若要部署 .NET Framework 應用程式,請根據 Windows Server 2019 Core 長期維護通道 (LTSC) 版本,使用正確的父映像。
  • 若要部署 .NET Core 應用程式,請根據 Windows Server 2019 Nano 半年維護通道 (SAC) 版本,使用正確的父映像。

在應用程式啟動期間,下載父映像需要一些時間。 不過,您可以使用下列其中一個已在 Azure App Service 中快取的父映像,以縮短啟動時間:

變更自訂容器的 Docker 映像

若要將現有的自訂容器從目前的 Docker 映像變更為新映像,請使用下列命令:

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

使用私人登錄的映像

若要從私人登錄使用映像,例如 Azure Container Registry,請執行下列命令:

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>

針對<使用者名稱和<>密碼>,請提供私人登錄帳戶的登入認證。

使用受控識別從 Azure Container Registry 提取映像

使用下列步驟來設定 Web 應用程式,以使用受控識別從 Azure Container Registry (ACR) 提取。 這些步驟使用系統指派的受控識別,但您也可以使用使用者指派的受控識別。

  1. 使用 az webapp identity assign 命令,為 Web 應用程式啟用系統指派的受控識別

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

    <app-name> 取代為上一個步驟中使用的名稱。 命令的輸出(由 --query--output 自變數篩選)是指派身分識別的服務主體標識碼。

  2. 取得 Azure Container Registry 的資源識別碼:

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

    以您的登錄名稱取代 <registry-name>。 命令的輸出(由 --query--output 自變數篩選)是 Azure Container Registry 的資源識別碼。

  3. 授與受控識別存取容器登錄的權限:

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

    取代下列值:

    • <principal-id> 使用來自 az webapp identity assign 命令的服務主體識別碼
    • az acr show 命令的容器登錄識別碼取代 <registry-resource-id>

    如需這些權限的詳細資訊,請參閱什麼是 Azure 角色型存取控制

  4. 將應用程式設為使用受控識別,從 Azure Container Registry 提取。

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

    取代下列值:

    • 使用您 Web 應用程式的名稱取代 <app-name>

    提示

    如果您使用PowerShell控制台來執行命令,則必須逸出此 自變數中的 --generic-configurations 字串,以及下一個步驟。 例如:--generic-configurations '{\"acrUseManagedIdentityCreds\": true'

  5. (選擇性)如果您的應用程式使用 使用者指派的受控識別,請確定已在 Web 應用程式上設定身分識別,然後設定 acrUserManagedIdentityID 屬性以指定其用戶端識別碼:

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

    取代使用者指派的受控識別 <identity-name>,並使用輸出 <client-id>,設定使用者指派的受控識別識別碼。

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

您已全部設定,而 Web 應用程式現在會使用受控識別從 Azure Container Registry 提取。

使用網路保護登錄的映像

若要從虛擬網路或內部部署內的登錄連線和提取,您的應用程式必須與虛擬網路 (VNET) 整合。 Azure Container Registry 與私人端點也需要 VNET 整合。 設定網路和 DNS 解析後,您可以透過進行 vnetImagePullEnabled 網站設定,啟用透過虛擬網路提取映像的路由:

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

我看不到更新的容器

如果您變更了 Docker 容器設定,以指向新的容器,應用程式可能需要數分鐘,才能處理來自新容器的 HTTP 要求。 在提取並啟動新容器時,App Service 會繼續處理舊容器的要求。 只有在新容器啟動並準備好接收要求後,App Service 才會開始對其傳送要求。

容器映像儲存的方式

第一次在 App Service 中執行自訂 Docker 映像時,App Service 會執行 docker pull 並提取所有映像層。 這些映像層會儲存在磁碟上,就如同在內部部署使用 Docker 一樣。 每次應用程式重新啟動時,App Service 會執行 docker pull,但只會提取有變更的映像層。 如果沒有變更,App Service 會在本機磁碟上使用現有的圖層。

如果應用程式因故變更了計算執行個體,例如擴大和縮小定價層,App Service 必須再次提取所有的層級。 如果您向外延展以新增更多實例,則也是如此。 也有一些罕見的情況,應用程式執行個體可能在沒有調整規模作業的情況下發生變更。

設定連接埠號碼

根據預設,App Service 會假設自訂容器在連接埠 80 上接聽。 如果您的容器接聽的是不同的連接埠,請在 App Service 應用程式中設定 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"}

App Service 目前僅允許容器為 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"}

應用程式執行時,App Service 應用程式設定會自動插入程序作為環境變數。 您可以使用 URL https://<app-name>.scm.azurewebsites.net/Env 驗證容器環境變數。

如果您的應用程式使用來自私人登錄或 Docker Hub 的映像,存取存放庫的認證會儲存在環境變數中:DOCKER_REGISTRY_SERVER_URLDOCKER_REGISTRY_SERVER_USERNAMEDOCKER_REGISTRY_SERVER_PASSWORD。 基於安全性風險,這些保留變數名稱不會公開給應用程式。

如果是 IIS 或 .NET Framework (4.0 或更新版本) 容器,則會透過 App Service 自動插入 System.ConfigurationManager,作為 .NET 應用程式設定和連接字串。 對於所有的其他語言或架構,則會以環境變數的格式提供給程序,並包含下列其中一個對應的前置詞:

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

此方法適用於單一容器應用程式或多容器應用程式,其中環境變數是在 docker-compose.yml 檔案中指定。

使用永續性共用儲存體

您可以使用自訂容器檔案系統中的 C:\home 目錄,在重新啟動時保存檔案,及在執行個體間共用。 提供 C:\home 目錄的目的是讓自訂容器可以存取永續性儲存體。

停用永續性記憶體時,不會在應用程式重新啟動或跨多個實例之間保存對 C:\home 目錄的寫入。 啟用永續性儲存體時,所有寫入 C:\home 目錄的內容都會保存,並可由擴增應用程式所有的執行個體存取。 此外,在容器啟動時,容器 C:\home 目錄中的任何內容都會遭到永續性儲存體上任何現有的檔案覆寫。

唯一的例外狀況是,用來儲存容器和應用程式記錄的 C:\home\LogFiles 目錄。 如果應用程式記錄是使用 [檔案系統] 選項啟用,且與啟用或停用持續性記憶體無關,此資料夾一律會在應用程式重新啟動時保存。 換句話說,啟用或停用永續性記憶體不會影響應用程式記錄行為。

依預設,Windows 自訂容器上會停用持續性儲存體。 若要啟用此設定,請透過 Cloud Shell,將 WEBSITES_ENABLE_APP_SERVICE_STORAGE 應用程式設定值設為 true。 在 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}

您可以使用自訂容器檔案系統中的 /home 目錄,在重新啟動時保存檔案,及在執行個體間共用。 提供 /home 目錄的目的是讓自訂容器可以存取永續性儲存體。 儲存內 /home 的數據會 提供App Service 方案隨附的儲存空間配額

停用永續性記憶體時,不會在應用程式重新啟動或跨多個實例之間保存對 /home 目錄的寫入。 啟用永續性儲存體時,所有寫入 /home 目錄的內容都會保存,並可由擴增應用程式所有的執行個體存取。 此外,在容器啟動時,容器 /home 目錄中的任何內容都會遭到永續性儲存體上任何現有的檔案覆寫。

唯一的例外狀況是,用來儲存容器和應用程式記錄的 /home/LogFiles 目錄。 如果應用程式記錄是使用 [檔案系統] 選項啟用,且與啟用或停用持續性記憶體無關,此資料夾一律會在應用程式重新啟動時保存。 換句話說,啟用或停用永續性記憶體不會影響應用程式記錄行為。

建議將數據寫入 /home 或掛接的 Azure 記憶體路徑。 這些路徑外部寫入的數據不會在重新啟動期間持續發生,而且會儲存至與 App Service Plans 檔案記憶體配額分開的平臺管理主機磁碟空間。

依預設,Linux 自訂容器上會啟用持續性儲存體。 若要停用此設定,請透過 Cloud Shell,將 WEBSITES_ENABLE_APP_SERVICE_STORAGE 應用程式設定值設為 false。 在 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}

注意

您也可以設定自己的永續性儲存體

偵測 HTTPS 工作階段

App Service 會在前端終止 TLS/SSL, 也就是說,TLS/SSL 要求永遠不會傳至您的應用程式。 您不必也不該在應用程式中實作 TLS/SSL 的任何支援。

前端位於 Azure 資料中心內。 如果您使用 TLS/SSL 搭配您的應用程式,則因特網上的流量一律會安全地加密。

自訂 ASP.NET 電腦金鑰插入

在容器啟動期間,自動產生的金鑰會插入容器,作為 ASP.NET 密碼編譯常式的電腦金鑰。 您可以尋找下列環境變數:MACHINEKEY_DecryptionMACHINEKEY_DecryptionKeyMACHINEKEY_ValidationKeyMACHINEKEY_Validation,然後在您的容器中找到這些金鑰

如果應用程式相依於金鑰,則重新啟動的新金鑰都可能會重設 ASP.NET 表單驗證和檢視狀態。 若要防止金鑰自動重新產生,請手動將金鑰設為 App Service 應用程式設定

連線到容器

您可以瀏覽至 https://<app-name>.scm.azurewebsites.net/ 以及選擇 SSH 選項,直接連線 Windows 容器進行診斷工作。 建立與容器的直接 SSH 會話,您可以在容器內執行命令。

  • 而且與主控台上方的圖形瀏覽器分開運作,並只顯示共用儲存體中的檔案。
  • 在擴增應用程式中,SSH 工作階段會連線至其中一個容器執行個體。 您可以從頂端 Kudu 功能表的 [執行個體] 下拉式清單,選取不同的執行個體。
  • 當您的應用程式重新啟動時,從 SSH 工作階段 對容器所做的任何變更都不會 保存(共用記憶體中的變更除外),因為它不屬於 Docker 映像的一部分。 若要保存變更,例如登錄設定和軟體安裝,請將變更加入 Dockerfile。

存取診斷記錄

App Service 會從容器內記錄 Docker 主機和活動所執行的動作。 Docker 主機的記錄 (平台記錄) 預設為傳送,但容器中的應用程式記錄或 Web 伺服器記錄必須手動啟用。 如需詳細資訊,請參閱啟用應用程式記錄啟用 Web 伺服器記錄

有數種方式可以存取 Docker 記錄:

Azure 入口網站

Docker 記錄會顯示在入口網站,位於應用程式的 [容器設定] 頁面中。 記錄會遭到截斷,但您可以下載所有選取 [下載] 的記錄。

從 Kudu

流覽至 https://<app-name>.scm.azurewebsites.net/DebugConsole 並選取 LogFiles 資料夾,以查看個別的記錄檔。 若要下載整個 LogFiles 目錄,請選取 目錄名稱左側的 [下載] 圖示。 您也可以使用 FTP 用戶端存取此資料夾。

在 SSH 終端機中,您預設無法存取 C:\home\LogFiles 資料夾,因為未啟用持續性共用記憶體。 若要在主控台終端機中啟用此行為,請啟用永續性共用儲存體

如果您使用 FTP 用戶端嘗試下載目前使用的 Docker 記錄,您可能會因為檔案鎖定而收到錯誤。

使用 Kudu API

直接瀏覽至 https://<app-name>.scm.azurewebsites.net/api/logs/docker 查看 Docker 記錄的中繼資料。 您可能會看到多個列出的記錄檔,而您可以透過 href 屬性直接下載記錄檔。

若要將所有記錄下載為一個 ZIP 檔案,請存取 https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip

自訂容器記憶體

根據預設,在 Azure App Service 中部署的所有 Windows 容器都已設定記憶體限制。 下表列出了每個 App Service 方案 SKU 的預設設定。

App Service 方案 SKU 以 MB 為單位的每個應用程式的預設記憶體限制
P1v3 1024
P1Mv3 1024
P2v3 1536
P2Mv3 1536
P3v3 2048
P3Mv3 2048
P4Mv3 2560
P5Mv3 3072

您可以透過 Cloud Shell 提供 WEBSITE_MEMORY_LIMIT_MB 應用程式設定來變更此值。 在 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}

此值是以 MB 定義,且必須小於或等於主機的實體記憶體總計。 例如,在包含 8 GB RAM 的 App Service 方案中,所有應用程式 WEBSITE_MEMORY_LIMIT_MB 的累計總和不得超過 8 GB。 您可以在進階第 3 版服務方案區段的 App Service 定價中,找到每個定價層可用記憶體量的資訊。

自訂計算核心數目

根據預設,Windows 容器在執行時,會使用所選定價層的所有可用核心。 例如,您可能想減少預備位置使用的核心數目。 若要減少容器使用的核心數目,請將 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}

注意

更新應用程式設定會觸發自動重新啟動,導致短暫的停機時間。 如果是生產應用程式,請考慮將應用程式交換至預備位置、變更預備位置中的應用程式設定,然後再交換回生產位置。

從入口網站或透過 Kudu 入口網站 (https://<app-name>.scm.azurewebsites.net/webssh/host) 開啟 SSH 工作階段,並使用 PowerShell 輸入下列命令,以確認調整數目。 每個命令都會輸出一個數字。

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

處理器可以是多核心或超執行緒處理器。 您可以在進階第 3 版服務方案區段的 App Service 定價中,找到每個定價層可用核心量的資訊。

自訂健康情況偵測行為

在容器啟動並回應 HTTP 偵測時,App Service 便會認為容器已成功啟動。 健康情況偵測要會求包含 User-Agent= "App Service Hyper-V Container Availability Check" 標頭。 如果容器在一定時間內啟動但未回應 Ping,App Service 會在 Docker 記錄檔中記錄事件,指出容器未啟動。

如果您的應用程式耗用大量資源,容器可能不會即時回應 HTTP 偵測。 若要控制 HTTP 偵測失敗時的動作,請設定 CONTAINER_AVAILABILITY_CHECK_MODE 應用程式設定。 您可以透過 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"}

下表顯示可能的值:

Description
Repair 在三次連續可用性檢查後重新啟動容器
ReportOnly 預設值。 在三次連續可用性檢查後不重新啟動容器,但在 Docker 記錄中報告容器的狀況。
關閉 不檢查可用性。

群組受管理服務帳戶的支援

App Service 中的 Windows 容器目前不支援群組受控服務帳戶 (gMSA)。

啟用 SSH

安全殼層 (SSH) 通常用於從命令列終端,遠端執行系統管理命令。 若要使用自訂容器啟用 Azure 入口網站 SSH 主控台功能,需要遵循下列步驟:

  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,且必須包含下列項目,才能符合 Azure 入口網站 SSH 功能:

    • 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" ] 
    

    注意

    跟 App Service 所使用的根密碼必須完全相同 Docker! ,才能讓您使用容器存取 SSH 工作階段。 此組態不允許容器的外部連線。 容器的埠 2222 只能在專用虛擬網路的網橋網路記憶體取,而且無法供因特網上的攻擊者存取。

  4. 重建 Docker 映像並將其推送至登錄,然後在 Azure 入口網站上測試 Web 應用程式 SSH 功能。

如需進一步的疑難解答資訊,請參閱 Azure App 服務 部落格:在適用於容器的Linux Web 應用程式上啟用 SSH

存取診斷記錄

您可以存取從容器產生的主控台記錄。

請先執行下列命令來開啟容器記錄:

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

以適合您 Web 應用程式的名稱取代 <app-name><resource-group-name>

開啟容器記錄後,請執行下列命令來查看記錄資料流:

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

如果您沒有立即看到主控台記錄,請在 30 秒後再查看。

若要隨時停止記錄資料流,請輸入 Ctrl+C

您也可以在瀏覽器中的 https://<app-name>.scm.azurewebsites.net/api/logs/docker 檢查記錄檔。

設定多容器應用程式

使用 Docker Compose 中的永續性儲存體

WordPress 等多容器應用程式需要永續性儲存體才能正常運作。 若要啟用永續性儲存體,Docker Compose 設定必須指向容器「外部」的儲存位置。 容器中的儲存位置不會保存變更至應用程式重新啟動後。

使用 Cloud Shell 中的 az webapp config appsettings set 命令,設定 WEBSITES_ENABLE_APP_SERVICE_STORAGE 應用程式設定,啟用永續性儲存體。

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 是 App Service 中與您應用程式的永續性儲存體相對應的環境變數。 例如:

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"

預覽限制

多容器目前為預覽版, 不支援下列 App Service 平臺功能:

  • 驗證/授權
  • 受控識別
  • CORS
  • Docker Compose 案例不支援虛擬網路整合
  • Azure App Service 上的 Docker Compose 目前有 4,000 個字元的限制。

Docker Compose 選項

下列清單顯示支援和不支援的 Docker Compose 設定選項:

支援的選項

不支援的選項

  • build (不允許)
  • depends_on (已忽略)
  • networks (已忽略)
  • secrets (已忽略)
  • 80 和 8080 以外的連接埠 (已忽略)
  • $variable and ${variable} 的預設環境變數 (與 docker 中的不同)

語法限制

  • "version x.x" 一律必須是檔案中的第一個 YAML 陳述式
  • 連接埠區段必須使用引號編號
  • 影像 > 磁碟區段必須加上引號,而且不能有許可權定義
  • 磁碟區區段在磁碟區名稱後面不得有空白大括號

注意

公開預覽中會忽略任何未明確標註的其他選項。

記錄中的 robots933456

您可能會在容器記錄中看到下列訊息:

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

您可以放心忽略這個訊息。 /robots933456.txt 是一個虛擬 URL 路徑,App Service 會使用該路徑來檢查容器是否可以處理要求。 404 回應只是指出路徑不存在,但其可讓 App Service 知道容器狀況良好,並已準備好回應要求。

下一步

或者,參閱其他資源: