Azure Python

Azure Pipelinesを利用してDockerコンテナを利用したPythonアプリケーションをContainer Registryに自動反映してみた

Azure DevOpsとは、Azure 上で DevOps(計画→開発→デリバリー→運用)を実現するために必要なサービスが揃ったプラットフォームのことをいう。

また、Azure DevOpsの提供するサービスの1つにAzure Pipelinesがあり、ソースコードのビルドと配置を自動的に行える。

今回は、Azure Pipelinesを利用して、Dockerコンテナを利用したPythonアプリケーションをContainer Registryに自動反映してみたので、その手順を共有する。

なお、Azure Pipelinesについては、以下のサイトを参照のこと。
https://qiita.com/mstakaha1113/items/f9fad71b8bd33e77d9ce

前提条件

下記サイトの手順に従って、Azure DevOps上のAzure Reposにブランチを作成しソースコードを配置済であること。

Azure DevOps上のAzure Reposにブランチを作成しソースコードを配置してみたAzure DevOpsとは、Azure 上で DevOps(計画→開発→デリバリー→運用)を実現するために必要なサービスが揃ったプラッ...

また、下記サイトの手順に従って、Azure Functions上で動作するDockerコンテナを利用したPythonアプリケーションをContainer Registryに配置済であること。

Azure Functions上で動作するDockerコンテナを利用したPythonアプリケーションをContainer Registryに配置してみたAzure Functions上でDockerイメージを利用してPythonアプリケーションを構築する際、Dockerイメージの配置先を...

やってみたこと

  1. Azure Pipelinesの作成
  2. Azure Functionsでの動作検証
  3. ソースコードの修正とAzure Pipelines動作検証

Azure Pipelinesの作成

ソースコードのビルドと配置を自動的に行うためのAzure Pipelinesは、Azure Devops上で作成できる。その手順は、以下の通り。

1) Azure DevOpsにログインし、Reposを確認した結果は、以下の通り。ここで「Pipelines」ボタンを押下する。
Azure Pipelinesの作成_1

2)「Create Pipeline」ボタンを押下する。
Azure Pipelinesの作成_2

3) ソースコードをAzure DevOps上のAzure Reposに配置しているため、「Azure Repos Git」を選択する。
Azure Pipelinesの作成_3

4) 表示されたAzure Reposリポジトリを選択する。
Azure Pipelinesの作成_4

5) 今回はDockerイメージを作成しAzure Container Registryに配置したいため、下記赤枠のDockerを選択する。
Azure Pipelinesの作成_5

6) Azureのサブスクリプションが表示されるため、選択し「Continue」ボタンを押下する。
Azure Pipelinesの作成_6

7) 以下のような別ウィンドウが起動するため、Azure Portalにログインするアカウントを利用して、サインインする。
Azure Pipelinesの作成_7_1

Azure Pipelinesの作成_7_2

8) 作成済のAzure Container Registryを選択し、Image名はそのままで、「Validate and configure」ボタンを押下する。
Azure Pipelinesの作成_8_1

なお、Azure Portal上で、Azure Container Registryに、以下の「funccontainer」を作成済であるとする。
Azure Pipelinesの作成_8_2

9) 以下のようなYAMLファイルが作成されるため、このまま「Save and run」ボタンを押下する。
Azure Pipelinesの作成_9

10) そのまま「Save and run」ボタンを押下する。
Azure Pipelinesの作成_10

11) 以下のように、Azure Pipelinesの開始が確認できる。なお、Azure Pipelinesは、作成されたYAMLファイル(azire-pipelines-yml)の設定に従って動作する。
Azure Pipelinesの作成_11

12) Azure Pipelineが終了すると、以下の画面が表示される。
Azure Pipelinesの作成_12

13)「Pipelines」メニューを再度押下すると、以下のように表示される。
Azure Pipelinesの作成_13

14) Azure Portalにログインし、Container Registry「funccontainer」を確認すると、以下のように、「azurefunctionpython」リポジトリが作成されたことが確認できる。
Azure Pipelinesの作成_14_1

Azure Pipelinesの作成_14_2 エンジニアファーストバナー

Azure Functionsでの動作検証

配置されたAzure Container Registry上のDockerイメージは、Azure Functionsに設定することで動作検証できる。その手順は、以下の通り。

1) Azure Portalにログインし、Dockerイメージを配置するAzure Functionsを開き、「設定」の「構成」メニューを押下する。
Azure Functionsでの動作検証_1

2) イメージ・イメージタグを、先ほど作成された「azurefunctionpython」リポジトリ変更し、「保存」ボタンを押下する。
Azure Functionsでの動作検証_2

3) Azure Functionsを再起動するため、概要メニューの「停止」ボタンを押下する。
Azure Functionsでの動作検証_3

4) 停止確認のダイアログが表示されるので、「はい」ボタンを押下する。
Azure Functionsでの動作検証_4

5) Azure Functions停止確認後、「開始」ボタンを押下する。
Azure Functionsでの動作検証_5

6) Azure Functionsの開始を確認後、URL確認のため、「HttpExample」関数のリンクを押下する。
Azure Functionsでの動作検証_6

7)「関数のURLの取得」メニューを押下後、_master(ホストキー)のURLをコピーする。
Azure Functionsでの動作検証_7

8) ブラウザでコピーしたURLにアクセスすると、以下のように、Azure DevOps上のfunction_app.pyの赤枠部分の文字列が、画面上に表示されることが確認できる。
Azure Functionsでの動作検証_8_1

Azure Functionsでの動作検証_8_2



ソースコードの修正とAzure Pipelines動作検証

Azure DevOps上のAzure Reposにソースコードを配置すると、作成済のAzure Pipelinesにより、Dockerコンテナを利用したPythonアプリケーションをContainer Registryに自動反映できる。その確認手順は、以下の通り。

1) 配置するソースコードのうち、function_app.pyの赤枠部分(by Pipeline)を追加する。
ソースコードの修正とAzure Pipelines動作検証_1

2)「git add」「git commit」「git push」コマンドを、それぞれ順次実行していくことで、ローカルのソースコードを、Reposリポジトリに配置する。
ソースコードの修正とAzure Pipelines動作検証_2_1

ソースコードの修正とAzure Pipelines動作検証_2_2 ソースコードの修正とAzure Pipelines動作検証_2_3

ちなみに、「git push」コマンドが一度失敗したため、「git pull」コマンドを実行後に、上記「git push」コマンドを実行している。
ソースコードの修正とAzure Pipelines動作検証_2_4

3)「git push」コマンドでAzure Reposを更新すると、以下のように、Azure Pipelineが自動的に動作し始めることが確認できる。
ソースコードの修正とAzure Pipelines動作検証_3

4) Azure Pipeline実行後の履歴は以下の通りで、2回、Azure Pipelineが実行されたことが確認できる。
ソースコードの修正とAzure Pipelines動作検証_4_1

ソースコードの修正とAzure Pipelines動作検証_4_2

5) Reposのコミット履歴を確認した結果は、以下の通り。
ソースコードの修正とAzure Pipelines動作検証_5_1

ソースコードの修正とAzure Pipelines動作検証_5_2

6) Azure Portal上のコンテナレジストリの内容は以下の通りで、「azurefunctionpython」リポジトリにタグ「173」が増えているのが確認できる。
ソースコードの修正とAzure Pipelines動作検証_6

7) Azure Portal上で関数アプリのイメージタグを最新版「173」に変更後、Azure Functionsを再起動する。
ソースコードの修正とAzure Pipelines動作検証_7

なお、詳細手順はこのページの Azure Functionsでの動作検証 を参照のこと。

8) 関数のURLにアクセスすると、以下のように、末尾に「by Pipeline!!」が表示されていることが確認できる。
ソースコードの修正とAzure Pipelines動作検証_8

要点まとめ

  • Azure DevOpsの提供するサービスの1つにAzure Pipelinesがあり、ソースコードのビルドと配置を自動的に行える。