Azure Functions の開発にはdevcontainerを使うと便利だった
Pythonを使用したAzure Functionsの開発に Visual Studio Codeのdevcontainerを使用しようというお話です。
はじめに
どうも、devcontainer大好きdevcontainerおじさんです。
最近Azure Functionsで普段は使用しないpythonを使って開発してみようと思い触ってみたんですが、いきなり npmでazure functions core toolsをインストール とか言われて、オイオイpython開発なのにnodeが要るなんて聞いてないぜとなったので、結構Azure Functions (Python)の開発環境整えるのって面倒くさそうだなと感じました。
そこでdevcontainerを使って開発環境を整えるとすごく便利ということがわかった(というかMicrosoftが便利なコンテナイメージを提供してくれている)ので、共有です。
Microsoftが提供してくれているAzure Functions用のコンテナ
提供されているコンテナイメージの一覧はAzure公式リポジトリから参照することができます。様々な種類があるうえに、Dockerfileも公開されているので参考にされてみてはいかがでしょうか。
今回は、core toolsが同梱されている 4-python3.9-core-tools
を使用してみました。
docker run --rm -it mcr.microsoft.com/azure-functions/python:4-python3.9-core-tools bash
上記コマンドで bash で試しに入ってみましたが、もちろんPythonは使用できますし、これからデプロイしたりするのに使用する Azure functions core tools も導入されていることがわかります。
始め方
ではこのコンテナイメージを使って開発する流れをご紹介します。始め方はとても簡単で、vscodeのメニューをポチポチいじるだけでdevcontainerを使った開発を始めることができます。
以下の手順はRemote - SSHで接続したリモート開発環境でもOKです。詳しくは↓
開発用フォルダをオープン
まずはFunctionsのソースコードが入るリポジトリ(フォルダ)を開きます。Functionsを作るのはこれから、という人は空のフォルダで大丈夫です。(例では適当にfuncapp001というフォルダを掘ってみました。)
devcontainerを準備する
というわけで次にdevcontainerを導入するんですが、ここではvscodeのウィザードを使用していきます。
左下の緑色のボタンをクリックし、開いたリモート関連のメニューから「Add Development Container Configuration Files...」をクリックします。
すると追加するdevcontainerの種類を選ぶメニューが出るので、「Show All Definitions...」をクリック。
新たに開いた画面でコンテナイメージ一覧がずらっと出るので、「Azure Python 3」などと入力します。
表示された「Azure Functions & Python 3」を選択します。
すると、.devcontainerフォルダが作成され、その中に devcontainer.json
と Dockerfile
が格納されていることが確認できると思います。 Dockerfile
に FROM mcr.microsoft.com/azure-functions/python:4-python3.9-core-tools
など、意図したコンテナイメージを使用する文言が含まれていることを確認します。
その状態で、左下の緑色のボタンをクリックし、「Reopen in Container」をクリックすると、立ち上がったdevcontainerに今のフォルダが開かれた状態でvscodeが再起動します。
あとはこれを使って通常通り開発していく、といった感じです。
終わりに
やはりdevcontainerは開発環境を整えるのにとても便利なツールですね。特に普段使用しないプログラミング言語を選択した場合など戸惑うことが多く、どうしても作っては壊しを繰り返すことになると思うので、コンテナでひとまとまりにして何度でもやり直せるのはとてもグッドだなと思いました。