Docs Menu
Docs Home
/ /

チュートリアル: Azureコンテナ アプリへの Flusk アプリの配置

このチュートリアルでは、MongoDB Atlasを使用する Fluskアプリケーションをコンテナ化し、 Azure Container Apps に配置する方法を説明します。 Azure Container Apps は、インフラストラクチャを管理する必要なく、コンテナ化アプリケーションの配置と管理を簡素化するサーバーレス プラットフォームです。

このチュートリアルでは、次のタスクを完了する方法について説明します。

  • 前提条件を確認します

  • [Flask]アプリケーションを設定する

  • Dockerfile の作成

  • Azure Container Register の作成

  • Dockerイメージをビルドしてプッシュします

  • Azure Container App の作成と配置

1

始める前に、次の前提条件を完了してください。

  • GitHubリポジトリから Fluk とMongoDBアプリケーションを作成

  • Docker Desktop のインストール

  • Microsoft Azureのインストール

  • Python 3.9 以降をインストール

  • Postman Desktop または別のAPIテスト ツールをインストール

このチュートリアルには、アクティブなクラスターとMicrosoft Azureサブスクライブを持つMongoDB Atlasアカウントも必要です。

2

次のコマンドを実行中て、Flaskアプリケーションリポジトリをクローンします。

git clone https://github.com/mongodb-developer/atlas-flask-azure-demo

Atlas UI を使用して、bookshelf という名前のデータベースに booksコレクションを作成します。次のサンプルドキュメントをガイドとして使用して、コレクションにいくつかのドキュメントを作成します。

{
"book": "The Great Gatsby",
"pages": 180,
},
{
"book": "Slaughterhouse-Five",
"pages": 215,
},
{
"book": "If Beale Street Could Talk",
"pages": 197,
}

アプリケーションを起動するには、作業ディレクトリに移動し、次のコマンドを実行します。

flask run

ブラウザまたはAPIテスト ツールを使用して /books エンドポイントにアクセスし、作成したドキュメントを取得します。

3

Dockerfile には、 Dockerイメージを構築するためのコマンドが含まれています。作業ディレクトリにDockerfile という名前のファイルを作成し、そのファイルに次のコンテンツを追加します。

FROM python:3.9-slim-buster
WORKDIR /azurecontainerappsdemo
COPY ./config/requirements.txt /azurecontainerappsdemo/
RUN pip install -r requirements.txt
COPY . /azurecontainerappsdemo/
ENV FLASK_APP=app.py
EXPOSE 5000
CMD ["flask", "run", "--host=0.0.0.0"]

requirements.txtファイルをconfig という名前の新しいフォルダーに移動して、 Docker がビルドプロセス中にこのファイルを見つけてコピーできるようにします。

この Dockerfile は、次のタスクを実行します。

  • 基本イメージとして python:3.9-slim-buster を使用

  • 作業ディレクトリを設定する

  • Python依存関係をコピーしてインストールします

  • アプリケーションファイルをコピーします

  • ポート 5000 を公開します

  • 任意のネットワークインターフェースからの接続を受け入れるように Flusk を設定します

次のコードを app.pyファイルの下部に追加して、Flask がすべてのネットワーク インターフェースで実行されるようにします。

if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)

Azureにデプロイする前に、 Dockerイメージがローカルで動作することを確認できます。次のコマンドを実行中してイメージをビルドします。

docker build --tag azurecontainerappsdemo .

次に、次のコマンドを実行中て、 MongoDB接続文字列でコンテナを実行します。

docker run -d -p 5000:5000 -e "CONNECTION_STRING=<MONGODB_ATLAS_URI_STRING_HERE>" azurecontainerappsdemo

コンテナがを実行中たら、ブラウザで http://localhost:5000 のアプリケーションにアクセスします。

4

Azure portal にサインインし、Container Register サービスに移動します。 Create をクリックし、レジストリの次の設定を指定します。

  • リソース グループ:リソースグループの名前

  • レジストリ名: ログインURLとして使用します

  • ロケーション: レジストリのロケーション

注意

コンテナ アプリを作成するときは、同じリソース グループとロケーションの値を使用する必要があります。

[Review and Create] をクリックします。

配置が完了したら、Visual Studio Code を開きます。 Docker拡張機能をインストールすることを確認します。

Registries に移動し、 Azureアカウントにログインして、レジストリに接続します。

次のコマンドを実行中してAzure Container Register にログインします。

docker login <azure registry url>

Tip

ユーザー名とパスワードは、コンテナ レジストリの Access Keys セクションで確認できます。認証情報を表示するには、Admin Access を有効にします。

重要

Windows を使用している場合は、エラーを回避するために右クリックしてターミナルに認証情報を貼り付けます。

5

次の手順でDockerイメージをビルドし、 Azure Container Register にプッシュします。ご使用のオペレーティング システムとアーキテクチャに対応するタブを選択します。

以下のコマンドを実行中して Buildx をインストールします。

docker buildx install

次のコマンドを実行中して Buildx を有効にします。

docker buildx create --use

次のコマンドを実行中て、linux/amd64 プラットフォームのイメージをビルドします。

docker buildx build --platform linux/amd64 --t <azure registry url>/<image name>:<image tag> --output type=docker .

次のコマンドを実行中て、 イメージをAzure Container Register にプッシュします。

docker push <azure registry url>/<image name>:<image tag>

次のコマンドを実行中してイメージをビルドします。

docker build --t <azure registry url>/<image name>:<image tag> --output type=docker .

次のコマンドを実行中してイメージをプッシュします。

docker push <azure registry url>/<image name>:<image tag>

次のコマンドを実行中してイメージをビルドします。

docker build --t <azure registry url>/<image name>:<image tag> .

次のコマンドを実行中してイメージをプッシュします。

docker push <image name>:<image tag>

プッシュが成功したことを確認するには、 Azureポータルのコンテナ レジストリに移動し、Repositories をクリックしてイメージを表示します。

6

Azureポータルの Container Apps サービスに移動し、Create をクリックします。

Basics セクションで、コンテナ アプリの次の設定を構成します。

  • サブスクリプション: Azureのサブスクライブ

  • リソース グループ: コンテナ レジストリに使用したのと同じリソースグループ

  • コンテナ アプリ名

  • リージョン: コンテナ レジストリに使用したのと同じリージョン

重要

これが最初のコンテナ アプリである場合は、アプリを作成する ときに環境を作成します。コンテナアプリ環境は、同じ仮想ネットワーク上にコンテナアプリの安全な境界を作成します。

App Settings セクションで次の設定を構成します。

  • オフ Use quickstart image

  • イメージソースとして Azure Container Registry を選択

  • レジストリ、イメージ、タグの情報を入力します

MongoDB Atlas接続文字列を CONNECTION_STRINGという名前の環境変数として追加します。

Ingress を有効にし、次の Ingress 設定を構成します。

  • Ingress トラフィック: どこからでもトラフィックを受け入れ

  • Ingress タイプ: HTTP

  • トランスポート: 自動

  • 安全でない接続: 許可

  • ターゲット ポート:5000

[Review and Create をクリックします。配置が完了したら、Go to Resource をクリックし、Application URL をクリックして配置されたアプリケーションにアクセスします。

MongoDB Atlas データベースから過去に追加した書籍を表示するには、 URLに /books を追加します。

このチュートリアルの完全なコードを表示するには、Github の azurecontainerappdemoリポジトリ を参照してください。

Azure Container Apps の詳細については、 MicrosoftウェブサイトにあるAzure Container Apps のドキュメントを参照してください。

戻る

チュートリアル: Pythonライブラリのテストとパッケージ化

項目一覧