Azure

StreamlitをAzure App Serviceで動かす(3)

前回は、Google認証付きStreamlitデモアプリをAzure App Serviceを使って動かすことに成功しました。
今回はStrealitのアプリに変更を加えたら自動でWeb アプリも更新されるように継続的Deployを構成してみようと思います。

継続的Deployの設定

以下のコマンドを実行し、継続的デプロイを有効にします。
また結果としてWebhook URLを取得します。

az webapp deployment container config --enable-cd true --name streamlithello --resource-group streamlit_rg --query CI_CD_URL --output tsv

次に、 取得したWebhook URLを使ってコンテナーレジストリに Webhookを作成します。
以下のコマンドを実行します(uriは取得したWebhook URLに置換します)。

az acr webhook create --name streamlitCD --registry streamlittestacr --uri https://$streamlithello:ufQoQAiDcfjdnzi7pspmr99Yto2YYrDEYA2YmnjXnuC0iFT7JxTkgEvpi5gh@streamlithello.scm.azurewebsites.net/docker/hook --actions push --scope streamlitnginx:latest

これでstreamlitnginx:latestに変更があった場合にWebhook URLが呼ばれ、Web アプリがレジストリーコンテナから新しいイメージをPullするようになります。

動作確認

では、Web アプリに変更を加え、イメージをPushしてみようと思います。
これまでのデモアプリを、以前作ったHello World!を表示するだけの簡単なアプリに置き換えます。

以前作ったapp.pyを追加します。

Dockefileに次の1行を追加して、app.pyをイメージに含めます。

COPY ./app /app/streamlit

my_wrapper_script.shを変更し、helloアプリではなくapp.pyを起動するようにします。

#streamlit hello &
streamlit run /app/streamlit/app.py &

Dockerビルドを行いローカルで動作確認をします。
問題なければビルドイメージにタグをつけます。

docker tag streamlitnginx streamlittestacr.azurecr.io/streamlitnginx:latest

コンテナーレジストリにPushします。

docker push streamlittestacr.azurecr.io/streamlitnginx:latest

Deployが完了するまで数分待って、ブラウザでhttps://streamlithello.azurewebsites.netにアクセスします。
Google認証後にHellow World!のデモ画面が出ればDeployは成功です。