前回は、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は成功です。