いしぐめも

プログラミングとかしたことを書きます。

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用のコンテナ

github.com

提供されているコンテナイメージの一覧はAzure公式リポジトリから参照することができます。様々な種類があるうえに、Dockerfileも公開されているので参考にされてみてはいかがでしょうか。

Azure Functions用のコンテナイメージ(一部)

今回は、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 も導入されていることがわかります。

Pythonが使用できるコンテナイメージ

Azure Functions用のCLI「func」が使える

始め方

ではこのコンテナイメージを使って開発する流れをご紹介します。始め方はとても簡単で、vscodeのメニューをポチポチいじるだけでdevcontainerを使った開発を始めることができます。

以下の手順はRemote - SSHで接続したリモート開発環境でもOKです。詳しくは↓

yoh1496.hatenablog.com

開発用フォルダをオープン

まずはFunctionsのソースコードが入るリポジトリ(フォルダ)を開きます。Functionsを作るのはこれから、という人は空のフォルダで大丈夫です。(例では適当にfuncapp001というフォルダを掘ってみました。)

開発に使用するフォルダを開く

devcontainerを準備する

というわけで次にdevcontainerを導入するんですが、ここではvscodeのウィザードを使用していきます。

左下の緑色のボタンをクリックし、開いたリモート関連のメニューから「Add Development Container Configuration Files...」をクリックします。

Add Development Container Configuration Files... を選択

すると追加するdevcontainerの種類を選ぶメニューが出るので、「Show All Definitions...」をクリック。

Show All Definitions... を選択

新たに開いた画面でコンテナイメージ一覧がずらっと出るので、「Azure Python 3」などと入力します。

検索単語を入力する

表示された「Azure Functions & Python 3」を選択します。

Azure Functions & Python 3

すると、.devcontainerフォルダが作成され、その中に devcontainer.jsonDockerfile が格納されていることが確認できると思います。 DockerfileFROM mcr.microsoft.com/azure-functions/python:4-python3.9-core-tools など、意図したコンテナイメージを使用する文言が含まれていることを確認します。

.devcontainerフォルダが作成される

その状態で、左下の緑色のボタンをクリックし、「Reopen in Container」をクリックすると、立ち上がったdevcontainerに今のフォルダが開かれた状態でvscodeが再起動します。

Reopen in Containerをクリック

あとはこれを使って通常通り開発していく、といった感じです。

終わりに

やはりdevcontainerは開発環境を整えるのにとても便利なツールですね。特に普段使用しないプログラミング言語を選択した場合など戸惑うことが多く、どうしても作っては壊しを繰り返すことになると思うので、コンテナでひとまとまりにして何度でもやり直せるのはとてもグッドだなと思いました。