將自訂軟體移轉至使用自訂容器的 Azure App Service

Azure App 服務 在 WINDOWS 上提供預先定義的應用程式堆疊,例如在 IIS 上執行的 ASP.NET 或Node.js。 預先設定的 Windows 環境會從下列專案鎖定作業系統:

  • 系統管理存取權。
  • 軟體安裝。
  • 全域程式集緩存的變更。

如需詳細資訊,請參閱 Azure App 服務 上的作業系統功能。

您可以從 Visual Studio 部署自訂設定的 Windows 映射,以變更應用程式所需的作業系統。 因此,移轉需要自定義 OS 和軟體設定的內部部署應用程式很容易。 本教學課程示範如何將使用安裝在 Windows 字型庫中自定義字型的 ASP.NET 應用程式移轉至 App Service。 您會將自定義設定的 Windows 映射從 Visual Studio 部署到 Azure Container Registry,然後在 App Service 中執行它。

顯示在 Windows 容器中執行的 Web 應用程式。

必要條件

完成本教學課程:

在本機設定應用程式

下載範例

在此步驟中,您會設定本機 .NET 專案。

  • 下載範例專案
  • 將custom-font-win-container-master.zip檔案解壓縮(解壓縮)。

範例專案包含簡單的 ASP.NET 應用程式,該應用程式會使用安裝在 Windows 字型庫中的自定義字型。 不需要安裝字型。 不過,此範例是與基礎 OS 整合的應用程式範例。 若要將這類應用程式移轉至 App Service,您可以重新架構您的程式代碼以移除整合,或將它移轉至自訂 Windows 容器中。

安裝字型

在 Windows 檔案總管中,流覽至 custom-font-win-container-master/CustomFontSample,以滑鼠右鍵按兩下 FrederickatheGreat-Regular.ttf,然後選取 [ 安裝]。

此字型可從 Google Fonts公開取得。

執行應用程式

Visual Studio 中開啟 custom-font-win-container-master/CustomFontSample.sln 檔案。

輸入 Ctrl+F5 以在不偵錯的情況下執行應用程式。 應用程式會顯示在您的預設瀏覽器中。

這個螢幕快照顯示預設瀏覽器中顯示的應用程式。

當應用程式使用已安裝的字型時,應用程式無法在App Service 沙箱中執行。 不過,您可以改為使用 Windows 容器加以部署,因為您可以在 Windows 容器中安裝字型。

設定 Windows 容器

在 方案總管 中,以滑鼠右鍵按兩下 CustomFontSample 專案,然後選取 [新增>容器協調流程支援]。

方案總管 視窗的螢幕快照,其中顯示已選取的 CustomFontSample 專案、[新增] 和 [容器協調器支援] 功能表項。

選取 [Docker Compose>OK]。

您的項目現在已設定為在 Windows 容器中執行。 會 Dockerfile 新增至 CustomFontSample 專案,並將 docker-compose 專案新增至方案。

從 方案總管 開啟 Dockerfile

您必須使用 支援的父映像。 使用下列程式代碼取代 FROM 行,以變更父映像:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019

在檔案結尾處,新增下列這一行並儲存盤案:

RUN ${source:-obj/Docker/publish/InstallFont.ps1}

您可以在 CustomFontSample 專案中找到 InstallFont.ps1 這是安裝字型的簡單腳本。 您可以在 PowerShell 資源庫 中找到更複雜的腳本版本。

注意

若要在本機測試 Windows 容器,請確定 Docker 已在您的本機電腦上啟動。

發佈到 Azure Container Registry

Azure Container Registry 可以儲存映射以進行容器部署。 您可以將 App Service 設定為使用裝載在 Azure Container Registry 中的映像。

開啟發佈精靈

在 方案總管 中,以滑鼠右鍵按兩下 CustomFontSample 項目,然後選取 [發佈]。

方案總管 螢幕快照,其中顯示已選取的 CustomFontSample 專案和 [發佈]。

建立登錄併發佈

在發佈精靈中,選取 [Container Registry>建立新的 Azure Container Registry>發佈]。

發佈精靈的螢幕快照,其中顯示 Container Registry、建立新的 Azure Container Registry,以及已選取 [發佈] 按鈕。

使用 Azure 帳戶登入

在 [ 建立新的 Azure Container Registry ] 對話框中,選取 [新增帳戶],然後登入您的 Azure 訂用帳戶。 如果您已經登入,請從下拉式清單中選取包含所需訂用帳戶的帳戶。

登入Azure。

設定登錄

根據下表中建議的值來設定新的容器登錄。 完成後,請選取 [建立]

設定 建議的值 如需相關資訊
DNS 首碼 保留產生的登錄名稱,或將其變更為另一個唯一名稱。
資源群組 選取 [ 新增],輸入 myResourceGroup,然後選取 [ 確定]。
SKU 基本 定價層
登錄位置 西歐

設定 Azure Container Registry。

終端機視窗隨即開啟,並顯示映射部署進度。 等待部署完成。

登入 Azure

登入 Azure 入口網站

建立 Web 應用程式

從左側功能表中,選取 [建立資源>Web>Web App for Containers]。

設定應用程式基本概念

在 [ 基本] 索引 標籤中,根據下表設定設定,然後選取 [下一步:Docker]。

設定 建議的值 如需相關資訊
訂用帳戶 請確定已選取正確的訂用帳戶。
資源群組 選取 [ 新建],輸入 myResourceGroup,然後選取 [ 確定]。
名稱 輸入唯一名稱。 Web 應用程式的 URL 是 https://<app-name>.azurewebsites.net,其中 <app-name> 是您的應用程式名稱。
發行 Docker 容器
作業系統 Windows
區域 西歐
Windows Plan 選取 [ 新建],輸入 myAppServicePlan,然後選取 [ 確定]。

[基本] 索引標籤看起來應該像這樣:

顯示用來設定 Web 應用程式的 [基本] 索引標籤。

設定 Windows 容器

在 [Docker] 索引卷標中,設定您的自定義 Windows 容器,如下表所示,然後選取 [檢閱 + 建立]。

設定 建議的值
影像來源 Azure 容器緩存器
登錄 選取 您稍早建立的登錄。
映像 customfontsample
標籤 latest

完成應用程式建立

選取 [建立 ],並等候 Azure 建立所需的資源。

流覽至 Web 應用程式

當 Azure 作業完成時,會顯示通知方塊。

顯示 Azure 作業已完成。

  1. 選取 [前往資源] 。

  2. 在應用程式頁面中,選取 URL 底下的連結。

新的瀏覽器頁面會開啟至下列頁面:

顯示 Web 應用程式的新瀏覽器頁面。

請稍候幾分鐘,然後再試一次,直到您取得首頁時所預期的美觀字型:

顯示首頁,其中包含您設定的字型。

恭喜! 您已將 ASP.NET 應用程式移轉至 Windows 容器中的 Azure App 服務。

請參閱容器啟動記錄

Windows 容器可能需要一些時間才能載入。 若要查看進度,請以您的應用程式名稱取代 <app-name> ,以移至下列URL。

https://<app-name>.scm.azurewebsites.net/api/logstream

串流記錄看起來像這樣:

14/09/2018 23:16:19.889 INFO - Site: fonts-win-container - Creating container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest.
14/09/2018 23:16:19.928 INFO - Site: fonts-win-container - Create container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest succeeded. Container Id 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:23.405 INFO - Site: fonts-win-container - Start container succeeded. Container: 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Configuring container
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container start-up and configuration completed successfully

Azure App 服務 使用 Docker 容器技術來裝載內建映像和自定義映像。 若要查看內建映射的清單,請執行 Azure CLI 命令 'az webapp list-runtimes --os linux'。 如果這些映像不符合您的需求,您可以建置和部署自定義映像。

注意

容器應以 x86-x64 架構為目標,不支援 ARM64。

在本教學課程中,您會了解如何:

  • 將自定義 Docker 映像推送至 Azure Container Registry
  • 將自定義映像部署至 App Service
  • 設定環境變數
  • 使用受控識別將映像提取至 App Service
  • 存取診斷記錄
  • 從 Azure Container Registry 啟用 CI/CD 到 App Service
  • 使用 SSH 將 連線 至容器

完成本教學課程會對容器登錄的 Azure 帳戶產生少量費用,而且可能會產生超過一個月的裝載容器成本。

設定初始環境

本教學課程需要 Azure CLI 2.0.80 版或更新版本。 若您使用的是 Azure Cloud Shell,即已安裝最新版本。

安裝 Docker 之後,開啟終端機視窗並確認已安裝 Docker:

docker --version

複製或下載範例應用程式

您可以透過 Git 複製或下載,取得本教學課程的範例。

使用 git 複製

複製範例存放庫:

git clone https://github.com/Azure-Samples/docker-django-webapp-linux.git --config core.autocrlf=input

請確定您包含 --config core.autocrlf=input 自變數,以確保 Linux 容器內所使用的檔案中有適當的行尾結束:

然後,瀏覽至資料夾:

cd docker-django-webapp-linux

從 GitHub 下載

您可以瀏覽 https://github.com/Azure-Samples/docker-django-webapp-linux、選取 [複製],然後選取 [ 下載 ZIP],而不是使用 Git 複製。

將 ZIP 檔案解壓縮到名為 docker-django-webapp-linux 的資料夾。

然後,在 docker-django-webapp-linux 資料夾中開啟終端機視窗

(選擇性)檢查 Docker 檔案

範例中名為 Dockerfile 的檔案,描述 Docker 映射並包含組態指示:

FROM tiangolo/uwsgi-nginx-flask:python3.6

RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt --no-cache-dir
ADD . /code/

# ssh
ENV SSH_PASSWD "root:Docker!"
RUN apt-get update \
        && apt-get install -y --no-install-recommends dialog \
        && apt-get update \
 && apt-get install -y --no-install-recommends openssh-server \
 && echo "$SSH_PASSWD" | chpasswd 

COPY sshd_config /etc/ssh/
COPY init.sh /usr/local/bin/

RUN chmod u+x /usr/local/bin/init.sh
EXPOSE 8000 2222

#CMD ["python", "/code/manage.py", "runserver", "0.0.0.0:8000"]
ENTRYPOINT ["init.sh"]
  • 第一組命令會在環境中安裝應用程式的需求。
  • 第二組命令會建立 SSH 伺服器,以保護容器與主機之間的通訊。
  • 最後一行 ENTRYPOINT ["init.sh"]會叫 init.sh 用 以啟動 SSH 服務和 Python 伺服器。

在本機建置及測試映像

注意

Docker Hub 針對每個 IP 的匿名提取數目和每個免費使用者的已驗證提取數目具有配額(請參閱數據傳輸)。 如果您注意到 Docker Hub 的提取受到限制,請嘗試 docker login 如果您尚未登入。

  1. 執行下列命令來建置映射:

    docker build --tag appsvc-tutorial-custom-image .
    
  2. 在本機執行 Docker 容器來測試組建是否正常運作:

    docker run -it -p 8000:8000 appsvc-tutorial-custom-image
    

    此命令 docker run 會指定具有 -p 自變數的埠,後面接著影像的名稱。 -it 可讓您使用 Ctrl+C來停止它。

    提示

    如果您在 Windows 上執行並看到錯誤, standard_init_linux.go:211:exec 使用者進程造成「沒有這類檔案或目錄」則 init.sh 檔案包含 CR-LF 行結尾,而不是預期的 LF 結尾。 如果您使用 git 複製範例存放庫,但省略 --config core.autocrlf=input 參數,就會發生此錯誤。 在此情況下,請使用 '--config'' 自變數再次複製存放庫。 如果您編輯 了 init.sh 並以 CRLF結尾儲存錯誤,也可能會看到錯誤。 在此情況下,請再次以 LF 結尾儲存盤案。

  3. 流覽至 以確認 http://localhost:8000 Web 應用程式和容器正常運作。

    在本機測試 Web 應用程式。

I. 建立使用者指派的受控識別

App Service 可以使用預設受控識別或使用者指派的受控識別,向容器登錄進行驗證。 在本教學課程中,您將使用使用者指派的受控識別。

  1. 執行 az group create 命令以建立資源群組:

    az group create --name msdocs-custom-container-tutorial --location westeurope
    

    您可以變更 --location 值,以指定您附近的區域。

  2. 在資源群組中建立受控識別。

    az identity create --name myID --resource-group msdocs-custom-container-tutorial
    

II. 建立容器登錄

  1. 使用 命令建立容器登入, az acr create 並以登入的唯一名稱取代 <registry-name> 。 名稱必須只包含字母和數位,而且在所有 Azure 中都必須是唯一的。

    az acr create --name <registry-name> --resource-group msdocs-custom-container-tutorial --sku Basic --admin-enabled true
    

    參數 --admin-enabled 可讓您使用一組系統管理認證,將映像推送至登錄。

  2. 執行 命令來 az acr show 擷取系統管理認證:

    az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>
    

    此命令的 JSON 輸出會提供兩個密碼,以及登錄的用戶名稱。

III. 將範例映像推送至 Azure Container Registry

在本節中,您會將映射推送至 Azure Container Registry,以供 App Service 稍後使用。

  1. 從您建置範例映像的本機終端機,使用 docker login 命令登入容器登錄:

    docker login <registry-name>.azurecr.io --username <registry-username>
    

    將和 <registry-username> 取代<registry-name>為先前步驟中的值。 出現提示時,輸入上一個步驟中的其中一個密碼。

    在本節的所有其餘步驟中,您會使用相同的登錄名稱。

  2. 登入成功時,請將本機 Docker 映像標記至登錄:

    docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  3. docker push使用 命令將映像推送至登入:

    docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

    第一次上傳映射可能需要幾分鐘的時間,因為它包含基底映射。 後續上傳通常較快。

    在等候時,您可以完成下一節中的步驟,以設定 App Service 從登錄部署。

IV. 授權登錄的受控識別

您建立的受控識別還沒有從容器登錄提取的授權。 在此步驟中,您會啟用授權。

  1. 擷取受控識別的主體標識碼:

    principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)
    
  2. 擷取容器登錄的資源標識碼:

    registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)
    
  3. 授與受控識別存取容器登錄的權限:

    az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"
    

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

V. 建立 Web 應用程式

  1. 使用 az appservice plan create 命令建立 App Service 方案:

    az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linux
    

    App Service 方案會對應至裝載 Web 應用程式的虛擬機。 根據預設,上一個命令會使用第一個月的免費 B1 定價層 。 您可以使用 參數來控制階層 --sku

  2. 使用 命令建立 az webapp create Web 應用程式:

    az webapp create --resource-group msdocs-custom-container-tutorial --plan myAppServicePlan --name <app-name> --deployment-container-image-name <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

    將 取代 <app-name> 為 Web 應用程式的名稱,此名稱在所有 Azure 中都必須是唯一的。 也請將 取代 <registry-name> 為上一節中登錄的名稱。

    提示

    您可以使用 命令 az webapp config container show --name <app-name> --resource-group msdocs-custom-container-tutorial隨時擷取 Web 應用程式的容器設定。 影像是在屬性 DOCKER_CUSTOM_IMAGE_NAME中指定。 透過 Azure DevOps 或 Azure Resource Manager 範本部署 Web 應用程式時,映像也可以出現在名為 LinuxFxVersion的屬性中。 這兩個屬性都具有相同用途。 如果兩者都存在於 Web 應用程式的組態中, LinuxFxVersion 則優先使用。

VI. 設定 Web 應用程式

在此步驟中,您會設定 Web 應用程式,如下所示:

  • 範例容器正在接聽埠 8000 的 Web 要求,而您可以將應用程式設定為將要求傳送至埠 8000。
  • 告知您的應用程式使用受控識別從容器登錄提取映像。
  • 從容器登錄設定持續部署(或,每個推送至登錄的映像都會觸發您的應用程式來提取新的映像)。 Web 應用程式不需要此元件,即可從容器登錄提取,但可讓 Web 應用程式知道何時將新映射推送至登錄。 如果沒有它,您必須重新啟動 Web 應用程式,手動觸發映像提取。
  1. 使用 az webapp config appsettings set 來設定 WEBSITES_PORT 應用程式程式代碼所預期的環境變數:

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

    <app-name> 取代為上一個步驟中使用的名稱。

    如需此環境變數的詳細資訊,請參閱 範例 GitHub 存放庫中的自述檔。

  2. 使用 az webapp identity assign 命令在 Web 應用程式中啟用使用者指派的受控識別:

    id=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query id --output tsv)
    az webapp identity assign --resource-group msdocs-custom-container-tutorial --name <app-name> --identities $id
    

    <app-name> 取代為上一個步驟中使用的名稱。

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

    appConfig=$(az webapp config show --resource-group msdocs-custom-container-tutorial --name <app-name> --query id --output tsv)
    az resource update --ids $appConfig --set properties.acrUseManagedIdentityCreds=True
    

    <app-name> 取代為上一個步驟中使用的名稱。

  4. 設定 Web 應用程式用來從 Azure Container Registry 提取的用戶端識別碼。 如果您使用系統指派的受控識別,則不需要此步驟。

    clientId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query clientId --output tsv)
    az resource update --ids $appConfig --set properties.AcrUserManagedIdentityID=$clientId
    
  5. 在 App Service 中啟用 CI/CD。

    cicdUrl=$(az webapp deployment container config --enable-cd true --name <app-name> --resource-group msdocs-custom-container-tutorial --query CI_CD_URL --output tsv)
    

    CI_CD_URL 是 App Service 為您產生的 URL。 您的登錄應該使用此 URL 來通知 App Service 發生映射推送。 它實際上不會為您建立 Webhook。

  6. 使用您從上一個步驟取得的CI_CD_URL,在您的容器登錄中建立 Webhook。

    az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latest
    
  7. 若要測試 Webhook 是否已正確設定,請 Ping Webhook,並查看您是否收到 200 OK 回應。

    eventId=$(az acr webhook ping --name appserviceCD --registry <registry-name> --query id --output tsv)
    az acr webhook list-events --name appserviceCD --registry <registry-name> --query "[?id=='$eventId'].eventResponseMessage"
    

    提示

    若要查看所有 Webhook 事件的所有資訊,請移除 --query 參數。

    如果您要串流容器記錄檔,您應該會在 Webhook ping 之後看到訊息: Starting container for site,因為 Webhook 會觸發應用程式重新啟動。

七。 流覽至 Web 應用程式

若要測試應用程式,請流覽至 https://<app-name>.azurewebsites.net,並將 <app-name> 取代為您的 Web 應用程式名稱。

第一次存取時,應用程式可能需要一些時間才能響應,因為 App Service 必須從登錄提取整個映射。 如果瀏覽器逾時,只要重新整理頁面即可。 提取初始映射之後,後續的測試會執行得更快。

瀏覽器的螢幕快照,其中顯示已成功在 Azure 中執行的 Web 應用程式。

八。 存取診斷記錄

當您等候 App Service 提取映射時,藉由將容器記錄串流至終端機,查看 App Service 的確切用途會很有説明。

  1. 開啟容器記錄:

    az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystem
    
  2. 開啟記錄資料串流:

    az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorial
    

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

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

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

九。 修改應用程式程式代碼並重新部署

在本節中,您會變更 Web 應用程式程式代碼、重建映像,然後將它推送至您的容器登錄。 App Service 接著會自動從登錄提取更新的映像,以更新執行中的 Web 應用程式。

  1. 在您的本機 docker-django-webapp-linux 資料夾中,開啟檔案 app/templates/app/index.html

  2. 變更第一個 HTML 元素以符合下列程式代碼。

    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">Azure App Service - Updated Here!</a>
        </div>
      </div>
    </nav>
    
  3. 儲存您的變更。

  4. 變更為 docker-django-webapp-linux 資料夾並重建映射:

    docker build --tag appsvc-tutorial-custom-image .
    
  5. 將映像的標籤更新為最新:

    docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

    以您的登錄名稱取代 <registry-name>

  6. 將映像推送至登入:

    docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  7. 映射推送完成時,Webhook 會通知 App Service 推送,而 App Service 會嘗試提取更新的映像。 請等候幾分鐘,然後流覽至 來確認更新是否已部署。https://<app-name>.azurewebsites.net

X. 使用 SSH 將 連線 至容器

SSH 可讓容器和用戶端之間進行安全通訊。 若要啟用容器的 SSH 連線,您必須為其設定自定義映像。 當容器執行時,您可以開啟 SSH 連線。

設定SSH的容器

本教學課程中使用的範例應用程式已在 Dockerfile具有必要的組態,其會安裝 SSH 伺服器,並設定登入認證。 本節僅供參考。 若要連線到容器,請跳至下一節。

ENV SSH_PASSWD "root:Docker!"
RUN apt-get update \
        && apt-get install -y --no-install-recommends dialog \
        && apt-get update \
  && apt-get install -y --no-install-recommends openssh-server \
  && echo "$SSH_PASSWD" | chpasswd 

注意

此組態不允許容器的外部連線。 SSH 只能透過 Kudu/SCM 網站取得。 Kudu/SCM 網站會使用您的 Azure 帳戶進行驗證。 root:Docker! 不應該變更 SSH。 SCM/KUDU 將會使用您的 Azure 入口網站認證。 變更此值會導致使用 SSH 時發生錯誤。

Dockerfile 也會將sshd_config檔案複製到 /etc/ssh/ 資料夾,並在容器上公開埠 2222:

COPY sshd_config /etc/ssh/

# ...

EXPOSE 8000 2222

埠 2222 是內部埠,只能由專用虛擬網路網橋網路內的容器存取。

最後,專案文本 init.sh 會啟動 SSH 伺服器。

#!/bin/bash
service ssh start

開啟容器的 SSH 連線

  1. 流覽至 https://<app-name>.scm.azurewebsites.net/webssh/host 並使用您的 Azure 帳戶登入。 以您的 Web 應用程式名稱取代 <app-name>

  2. 當您登入時,系統會將您重新導向至 Web 應用程式的資訊頁面。 選取 頁面頂端的SSH 以開啟殼層並使用命令。

    例如,您可以使用 命令來檢查其 top 內執行的進程。

XI. 清除資源

您在本文中建立的資源可能會產生持續成本。 若要清除資源,您只需要刪除包含這些資源的資源群組:

az group delete --name msdocs-custom-container-tutorial

下一步

您已了解如何︰

  • 將自定義映像部署至私人容器登錄
  • 在 App Service 中部署和自定義映像
  • 更新並重新部署映像
  • 存取診斷記錄
  • 使用 SSH 將 連線 至容器
  • 將自定義 Docker 映像推送至 Azure Container Registry
  • 將自定義映像部署至 App Service
  • 設定環境變數
  • 使用受控識別將映像提取至 App Service
  • 存取診斷記錄
  • 從 Azure Container Registry 啟用 CI/CD 到 App Service
  • 使用 SSH 連線 至容器

在下一個教學課程中,您將瞭解如何使用自定義網域和憑證保護您的應用程式。

或者,查看其他資源: