Home About Contact
Azure , Docker

ACR から Web App Service に deploy する (azure-web-app Part 3)

前回、 ACR へコンテナイメージを push したので、 このコンテナイメージを Azure Web App Service に deploy します。

app service plan をつくったあとに web app をつくります。

紙面の都合で一つのシェルスクリプトで書いていますが、 plan が作成できなければ web app はつくれないので、別々に実行すべきです。

#!/bin/bash

RG=my-ktor-rg
PLAN_NAME=myktorplan
WEB_APP_NAME=myktorapp

SKU=B1
L=japaneast

IMAGE_NAME=myktor.azurecr.io/my-ktor:v1

az appservice plan create --resource-group ${RG} --name ${PLAN_NAME} \
    --location ${L} --is-linux --sku ${SKU}

az webapp create --resource-group ${RG} --plan ${PLAN_NAME} --name ${WEB_APP_NAME} \
    --deployment-container-image-name ${IMAGE_NAME}

例によって RG, PLAN_NAME, IMAGE_NAME などは仮の値です。 ここでは webapp 名を myktorapp にしていますが、こんな短い名前ではまず通らないでしょう。

また location とSKUの組み合わせ次第では、生成できないことがあります。 その場合は、別のロケーション(リージョン)にしろとか言われるので、指示に従いましょう。

コマンドが成功したら、hostNames が標準出力される:

 "hostNames": [
    "myktorapp.azurewebsites.net"
  ],

この ホスト名を使って deploy した webapp にアクセスします。

$ curl -X GET https://myktorapp.azurewebsites.net/1
{ 
    "id": 1,
    "name": "Pikachu"
}

なお、今題材として使っている my-ktor アプリは 8080 ポートで動くようにしているので、 追加の設定は不要ですが、それ以外のポートを使っている場合は、明示的に使うポートを指定する必要があるらしい。

まとめ

これで Silicon Mac 上で Gradle でつくった Ktor アプリを コンテナイメージを経由して Azure の Web App Service で動かすことができた。

次は、以前に試した Azure Postgres Flexible Server に、この deploy した webapp からアクセスしてみたい。 もちろん、現在のアプリは データベース自体を使っていないので、 そこを直さなければならない。