共用方式為


設定 Azure App Service 的自訂容器

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

學習關鍵概念並取得 App Service 中 Windows 應用程式容器化的說明。 新手應先依 照自訂容器快速入門教學操作。

學習關鍵概念,並取得 App Service 中 Linux 應用程式容器化的說明。 新手應先依 照自訂容器快速入門教學操作。 對於側車容器,請參閱教學課程:在 Azure App Service 中設定自訂容器的側車容器

附註

不再支援使用服務主體來進行 Windows 容器映像提取的驗證。 我們建議你在 Windows 和 Linux 容器上都使用管理身份。

支援的父映像

您必須為所需的自訂 Windows 映像架構選取正確的父代映像 (基礎映像)

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

在應用程式啟動期間,下載父映像需要一些時間。 您可以使用已在 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>

請在\<username>\<password>欄位中提供您私人註冊帳戶的登入憑證。

使用受控身份驗證從 Azure Container Registry 擷取映像

請依照以下步驟設定您的網頁應用程式,透過管理身份從 Azure 容器登錄檔(Azure Container Registry)拉取資料。 這些步驟使用系統指派的管理身份,但你也可以使用使用者指派的管理身份。

  1. 請使用以下指令啟用az webapp identity assign

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

    <app-name> 替換為您在上一個步驟中使用的名稱。 命令的輸出 (由 --query--output 引數篩選) 是受指派身分識別的服務主體 ID。

  2. 取得你的容器登錄的資源 ID:

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

    <registry-name> 取代為您的登錄名稱。 經由 --query--output 參數過濾後,命令的輸出是容器登錄的資源 ID。

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

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

    取代下列值:

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

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

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

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

    取代下列值:

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

    提示

    如果您使用 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 提取。

使用受網路保護登錄的映像

若要從虛擬網路或內部部署內的登錄連線和提取,您的應用程式必須與虛擬網路整合。 你也需要將 Azure 容器註冊表與虛擬網路整合,並搭配私有端點。 設定網路和 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 應用程式設定。 你可以用 Azure 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 映像檔透過 SSH 進入容器時,如果嘗試使用像是 envprintenv 的指令,可能只會看到一些環境變數。 要查看容器內所有環境變數,例如你傳送給應用程式用於執行時的變數,請在你的入口腳本中加入這行:

eval $(printenv | sed -n "s/^\([^=]\+\)=\(.*\)$/export \1=\2/p" | sed 's/"/\\\"/g' | sed '/=/s//="/' | sed 's/$/"/' >> /etc/profile)

請參閱 完整範例

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

對於網際網路資訊服務(IIS)或 .NET 框架(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 自訂容器上會啟用持續性儲存體。 要停用它,請將 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 目錄,跨重啟時持續保存檔案並跨實例共享。 當您使用C:\home目錄時,您的自訂容器可以存取持續性儲存空間。 請記得,您儲存的資料 /home 會納入您的 App Service 方案中包含的 儲存空間配額

當永久儲存被停用時,寫入 C:\home 目錄中的內容不會在應用程式重啟或多個實例間持續存在。 啟用持久儲存時,所有寫入 C:\home 該目錄的紀錄都會持續存在。 已擴增應用程式的所有執行個體可以存取它們。 當容器啟動時,如果持久儲存上有任何檔案存在,它們會覆寫容器目錄中 C:\home 的所有內容。

唯一的例外是 C:\home\LogFiles 目錄。 此目錄會儲存容器和應用程式記錄。 只要啟用 應用程式日誌 並使用 檔案系統 選項,無論是否有啟用持久儲存,該資料夾在應用程式重啟時都會持續存在。 換句話說,啟用或停用持久儲存時,並不會影響應用程式的日誌行為。

我們建議你將資料寫入 或已掛載的 Azure 儲存路徑。 你寫入這些路徑外的資料在重新啟動時不會持續存在。 資料會被儲存到平台管理的主機磁碟空間,與 App Service 計畫的檔案儲存配額分開。

依預設,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 連線

App Service 會在前端終止 TLS。 這表示 TLS 要求永遠不會進入您的應用程式。 您不需要且不應該在應用程式中實作任何 TLS 支援。

前端位於 Azure 資料中心內部。 如果你在應用程式中使用 TLS,網路上的流量總是安全加密的。

自訂 ASP.NET 電腦金鑰插入

在容器啟動時,金鑰會自動產生並注入容器,作為 ASP.NET 密碼例程的機器金鑰。 你可以在容器中尋找以下環境變數來找到這些鍵MACHINEKEY_Decryption、、 MACHINEKEY_DecryptionKeyMACHINEKEY_ValidationKeyMACHINEKEY_Validation、 和 。

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

連線到容器

若要直接連接到 Windows 容器進行診斷任務,請前往 https://<app-name>.scm.azurewebsites.net/ 並選擇 SSH 選項。 這個選項會建立一個直接的 SSH 會話,讓你能在容器內執行指令。

  • 而且與主控台上方的圖形瀏覽器分開運作,並只顯示共用儲存體中的檔案。
  • 在擴展型應用程式中,SSH 會連接到其中一個容器實例。 您可以從頂端 Kudu 選單中的 [ 實例 ] 下拉式清單中選取不同的實例。
  • 除了共享儲存空間的變更外,你在 SSH 會話中對容器所做的任何變更,在應用程式重新啟動時 都不會 持續存在。 這些變更不包含在 Docker 映像檔中。 要保留像是登錄檔設定和軟體安裝等變更,請將它們納入 Dockerfile 中。

存取診斷記錄

App Service Docker 會記錄主機的動作及容器中的活動。 默認會啟用來自 Docker 主機的記錄(平台記錄)。 您必須從容器內手動啟用應用程式記錄或 Web 伺服器記錄。 如需詳細資訊,請參閱啟用應用程式記錄啟用 Web 伺服器記錄

你可以用多種方式存取 Docker 日誌:

Azure 入口網站

Docker 日誌會顯示在你應用程式的 Azure 入口網站容器 設定 窗格中。 記錄遭到截斷。 若要下載所有記錄,請選取 [ 下載]。

Kudu

要查看各個日誌檔案,請前往https://<app-name>.scm.azurewebsites.net/DebugConsole並選擇該資料夾。LogFiles 要下載整個 LogFiles 目錄,請選擇目錄名稱左側的 下載 圖示。 你也可以透過 FTP 用戶端存取這個資料夾。

預設情況下,你無法在 SSH 終端機存取該 C:\home\LogFiles 資料夾,因為沒有啟用持久共享儲存。 若要在主控台終端機中啟用此行為,請啟用永續性共用儲存體

如果你嘗試用 FTP 用戶端下載目前正在使用的 Docker 日誌,可能會因為檔案鎖定而出現錯誤。

Kudu API(Kudu 的應用程式介面)

直接前往 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

你可以透過在 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。 欲了解更多可用記憶體容量,請參閱 App Service 價格中的 Premium v3 服務方案。

自訂計算核心數目

預設情況下,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}

提示

更新應用程式設定會觸發自動重新啟動,這會導致最短的停機時間。 如果是生產應用程式,可以考慮把它換成預備位置。 在暫存槽中更改應用程式設定,然後再切換回生產環境。

要驗證調整後的號碼,請使用 Azure 入口網站或 Kudu 入口網站()開啟 SSH 會話。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.

處理器可能是多核心或超執行緒處理器。 想了解可用核心數量,請參閱 App Service 價格中的 Premium v3 服務方案。

自訂健康情況偵測行為

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

如果你的應用程式資源密集,容器可能無法及時回應 HTTP ping。 要控制 HTTP ping 失敗時的反應,請設定應用程式 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 日誌中回報容器,但不要重新啟動它。
Off 不檢查可用性。

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

群組管理服務帳號在 Windows 容器的 App Service 中不被支援。

啟用 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-cbcaes256-cbc
    • MACs這些值必須包含此列表中至少一項:hmac-sha1hmac-sha1-96
  2. 建立一個名為 entrypoint.sh entrypoint 的腳本,或更改任何現有的 entrypoint 檔案。 新增 命令以啟動 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! 因為 App Service 用它來授權你存取容器的 SSH 會話。 此組態不允許容器的外部連線。 容器的埠 2222 只能在私有虛擬網路的橋接網路內存取。 網路上的攻擊者無法存取。

  4. 重建並推送 Docker 映像檔到登錄檔,然後在 Azure 入口網站測試 Web App SSH 功能。

欲了解更多故障排除資訊,請參閱 Azure App Service 部落格: 在 Linux 容器網頁應用程式啟用 SSH

存取診斷記錄

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

若要開啟容器記錄,請執行下列命令:

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

請將 <app-name><resource-group-name> 的值取代為 Web 應用程式適用的名稱。

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

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

如果主控台記錄未立即出現,請在30秒後再次檢查。

要隨時停止日誌串流,請使用鍵盤快捷鍵 Ctrl+C。

設定多容器應用程式

附註

Docker Compose 功能將於 2027 年 3 月 31 日淘汰。 側車容器會成功在 App Service 中使用多容器應用程式。 關於新服務,請參考 教學:在 Azure App Service 中為自訂容器配置側車容器。 關於 App Service 中現有的多容器應用程式,請參見 將 Docker Compose 應用程式遷移至 sidecar 功能

使用 Docker Compose 中的持久性儲存

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

若要啟用永續性記憶體,請設定 WEBSITES_ENABLE_APP_SERVICE_STORAGE 應用程式設定。 在 az webapp config appsettings set 裡使用這個指令。

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 (忽略)
  • 除了 808080 以外的端口(忽略)
  • 預設環境變數如 $variable${variable} (不像 Docker 裡)

語法限制

  • 檔案中的第一個 YAML 語句必須是 version x.x
  • 端口部分必須使用帶引號的數字。
  • image > volume 區段必須引用,且不能有權限定義。
  • 卷冊區塊不能在卷名後面加上空的捲括號。

附註

其他未明確提及的選項在預覽中會被忽略。

忽略記錄中的 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 表示容器健康且準備回應請求。