Azure App Serviceで動作するDockerコンテナを利用したPython Flaskアプリケーションを作成してみた
Pythonのライブラリ「Flask」を利用したWebアプリケーションは、Azure App Service上で動作させることができる。
今回は、Dockerコンテナを利用した、FlaskによるAzure App Service上で動作するアプリケーションを作成してみたので、その手順を共有する。
前提条件
下記サイトの手順に従って、Azure Portalのアカウントを作成済であること。
https://qiita.com/qt-luigi/items/53341070a7fd4de802f9
また、下記サイトの手順に従って、Docker Hubアカウントを作成済であること。
やってみたこと
ローカル環境でのAzure App Service動作検証
ローカル環境でのAzure App Service動作検証は、Docker Desktopを起動して行える。その手順は、以下の通り。
1) git cloneコマンドで、以下のサイトから、Azure App Serviceで動作するDockerコンテナを利用したPython Flaskアプリケーションのサンプルコードを入手する。
https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart

2) 以下のサイトに記載の、Dockerfile・.dockerignore・gunicorn.conf.pyを追加する。
https://learn.microsoft.com/ja-jp/azure/developer/python/tutorial-containerize-simple-web-app-for-app-service?tabs=web-app-flask#add-dockerfile-and-dockerignore-files
なお、DockerfileのPythonバージョンは、python:3.14.3-slim-bookwormにしている。
3) Docker Desktopを起動し、先ほど作成したDockerfileが存在するディレクトリ上で、「docker build –tag (Dockerイメージ名) .」コマンドを実行する。
「docker build –tag (Dockerイメージ名) .」コマンドを実行する。

4) 先ほど作成したDockerfileが存在するディレクトリ上で、「docker run –detach –publish 5000:50505 (Dockerイメージ名)」コマンドを実行する。

5) ブラウザを起動し、「http://localhost:5000」にアクセスすると、以下のように、Flaskアプリケーションが動作することが確認できる。

次画面に遷移し、「Hello (入力した名前)」が表示されることが確認できる。

6) Dockerのログを確認するには、Docker Desktop Containers画面の「Name」をクリックする。

7) 以下のように、ログ表示が確認できるが、「app.py」に記載のprint文が表示されていない。

8) docker runコマンドで起動したDocker Containerを停止するには、Docker Desktop Containers画面の停止ボタンを押下する。

Docker Containerが停止すると、以下の画面が表示される。なお、青枠の「削除」ボタンを押下すると、docker runコマンドで起動したDocker Containerが削除される。

9)「app.py」に記載のprint文をログに表示できるようにするには、以下のように、Dockerfileに「ENV PYTHONUNBUFFERED=1」を追加する。
FROM python:3.14.3-slim-bookworm # Pythonライブラリを読み込む WORKDIR /code COPY requirements.txt . RUN pip3 install -r requirements.txt COPY . . # ログをバッファリングせず即時出力する設定を追加 ENV PYTHONUNBUFFERED=1 # Flaskアプリケーションを起動 EXPOSE 50505 ENTRYPOINT ["gunicorn", "app:app"]
10) 3)docker buildコマンドの実行~6)Dockerのログ確認まで再度実行すると、以下のように、「app.py」に記載のprint文が表示されていることが確認できる。


Azure上でのAzure App Service動作検証
Azure上でのAzure App Service動作検証は、Azure Container RegistryにDockerイメージを配置して行える。その手順は、以下の通り。
1) 下記記事の「Azure PortalでContainer Registryの作成」に従って、Azure Container Registryを作成する。
Azure Container Registryは、下記設定で作成する。

2) Azure Container Registry上にDockerイメージを配置するため、「az login」コマンドを実行し、Azure環境にログインする。

3)「az acr build –resource-group (リソースグループ名) –registry (コンテナレジストリ名) –image (Dockerイメージ名):(バージョン) .」コマンドを実行して、Azure Container Registry上にDockerイメージを配置する。


4) Azure Portalにログインし、Azure Container Registryのリポジトリを確認すると、配置したDockerイメージのリポジトリが作成されていることが確認できる。


5) 作成するAzure App Serviceで指定する、App Serviceプランを作成する。そのため、Azure Portalで「App Service プラン」を選択する。

7) 必要事項を指定し「確認および作成」ボタンを押下する。ここでは、価格を最小にするため、価格プランは「Free F1」を選択している。

9) デプロイが完了すると以下の画面が表示されるため、「リソースに移動」ボタンを押下する。

10) 以下のように、App Service プランの作成が確認できる。

11) Dockerコンテナを利用したPython Flaskアプリケーションを配置するAzure App Serviceを作成するが、Azure Portalでの作成が上手くいかないため、コマンドで作成する。
以下のコマンドを実行し、Azure App Serviceを作成する。
az webapp create –resource-group (リソースグループ名) –plan (AppServiceプラン名) –name (AppService名) –assign-identity [system] –role AcrPull –scope /subscriptions/(サブスクリプションID)/resourceGroups/(リソースグループ名) –acr-use-identity –acr-identity [system] –container-image-name (コンテナレジストリ名).azurecr.io/(Dockerイメージ名):(バージョン)

12) Azureからログアウトするため、「az logout」コマンドを実行する。

13) ブラウザを起動し、「https://(AppService名).azurewebsites.net」にアクセスすると、以下のように、Flaskアプリケーションが動作することが確認できる。

次画面に遷移し、「Hello (入力した名前)」が表示されることが確認できる。

14) 作成したAzure App Serviceは、Azure Portal上で確認できる。

以下のように、作成したAzure App Serviceの中身の表示が確認できる。

15)「ログストリーム」を選択すると、直近の動作ログを確認できる。

Azure App Serviceログ記録の有効化
Azure App Serviceログ記録の有効化は、Azure Portal上で実行できる。その手順は、以下の通り。
1) Azure Portal上で、作成したAzure App Serviceを開き、「App Service ログ」メニューを押下する。

2)「ファイル システム」を有効化後、クォータ、リテンション期間を指定し、「保存」ボタンを押下する。

3) 保存が完了すると、以下のようにメッセージが表示される。

4) ブラウザを起動し、「https://(AppService名).azurewebsites.net」にアクセスし、画面操作する。


6) ファイルに出力されたログを確認するには、「高度なツール」を押下後、「移動」リンクを押下する。

7)「Logs」メニュー選択後、「Download All Container Logs」を押下すると、ファイルに出力されたログをダウンロードできる。

8) ダウンロードされた「2026_03_07_10-30-0-179_default_docker.log」に、出力されたログが確認できる。

要点まとめ
- Pythonのライブラリ「Flask」を利用したWebアプリケーションは、Dockerコンテナを利用して、Azure App Service上で動作させることができる。

















