Peter 工程日誌

如何利用在Azure上的Azure Web App部署一個Docker容器

前言

相信在看這篇文章之前,已經先看過這篇文章了。從前一篇文章,我們可以得知該如何利用Azure Web App上部署的方法把我們的專案部署上去。

可是,這個沒辦法滿足下列的要求

為了要解決上述的問題,Azure Web App提供另一項的部署方式,那就是用Docker container方式,透過編寫的Dockerfile或docker-compose.yml方式,Azure Web App會在部署的時候讀取它們並部署成一個container,即是一個容器為一個Web App Service的概念。

本文章,就是要使用Azure Web App並透過載入Docker 映像來達到部署Web App Service。

登入Azure portal

首先,先登入Azure portal,Web方式管理Azure雲端運算平台的服務。

接著,在利用Docker container部署一個Azure Web App之前,需要將我們需要用到的Docker 映像發怖到網路上的平台,因為Azure Web App用Docker容器部署的時候,可以接受以下幾種方式:

本章節中,我們只使用「Azure Container Registry」這種方式載入我們所需要的Docker映像檔。原因是因為:

我們在上圖中的「搜尋資源,服務及文件的地方」輸入「容器登錄」就可以得到如下的截圖:

因為我在之前有建立一個Docker容器登錄的位址,因此截圖上有出現在清單中,接著按下「新增」,就會看到下面的截圖:

就先取好自己的Docker container Registry名字,還有其他選項,如下圖所示:

都確認之後,接著按下「建立」的按鈕,就會開始建立Azure Container Registry位置了。

建立完成之後,在清單中就會看到剛剛建立的Azure Container Registry了。

點擊剛剛所建立好的容器登錄。

就會看到這樣的截圖如下:

點擊「存取金鑰」並把管理使用者「啟用」,這樣就可以允許Azure Web App在部署的時候去存取此Azure Container Registry上的Docker映像了。

接著,打開終端機,假設已經把「az」安裝好了(若沒有安裝,請先讀這篇文章),我們可以輸入如下的指令進行登入:


az acr login --name=your-acr-name

登入成功後,會出現下列的訊息


Login Succeeded

接下來,就可以把本地建置好的Docker映像發怖到我們先前所建立好的Azure Container Registry了

我們先標記目前的Docker映像的版本,這樣在Azure Container Registry上選擇版本的時候更加容易,可以利用下面的指令來達成


docker tag database-adminer your-acr-name.azurecr.io/database-adminer:v1

database-adminer是我在本地端Docker映像檔的名稱,而「your-acr-name」是之前步驟建立Azure Container Registry的名稱。

建立好標籤之後,接著再用下面的指令將本地端的Docker映像傳輸到先前所建立的Azure Container Registry。


docker push multidbp.azurecr.io/database-adminer:v1

都建立完成之後,回到Azure Container Registry頁面並點選「存放庫」可以發現剛剛所建立的Docker映像已經在上面了,如下截圖:

接著點選進去,就可以看到目前推送上去所有的的標籤清單了

我們完成了Docker映像的推送後,接下來可以用Azure Web App部署了

首先,我們先進到如下圖的「Azure Web應用程式」頁面並再新增一個新的Web應用程式,選擇相關的選項如下圖:

在圖中我們可以得知,我們取一個Web App名字叫做「database-adminer-docker」並把部署方式選擇「Docker映像」,其他選項都用與之前文章相同即可。接著點選「下一步:Docker」,就會到下面的截圖:

我們選擇「單一容器」,映像來源選擇「Azure Container Registry」,接著選擇登錄容器的名稱,映像以及標籤版本,啟動命令留下空白,這裡是因人而異,原因是因為我們在「Dockerfile」裡面已經有明確的指定要執行的指令,因此不需要再額外輸入需要執行指令。

接著就「下一步 標籤」再接著按「下一步 檢閱及建立」,最後就按下「建立」,如下截圖。

接著就跑起來了,如下截圖:

參考資料

Exit mobile version