Overview
このチュートリアルでは、MongoDB Atlasを使用する Fluskアプリケーションをコンテナ化し、 Azure Container Apps に配置する方法を説明します。Azure Container Apps は、インフラストラクチャを管理する必要なく、コンテナ化アプリケーションの配置すると管理を簡素化するサーバーレスプラットホームです。
Tutorial
このチュートリアルでは、次のタスクを完了する方法について説明します。
前提条件を確認します
[Flask]アプリケーションを設定する
Dockerfile の作成
Azure コンテナ Registry の作成
Dockerイメージをビルドしてプッシュします
Azure Container App の作成と配置
前提条件を確認します
始める前に、次の前提条件を完了してください。
GitHubリポジトリから Fluk とMongoDBアプリケーションを作成
Docker Desktop のインストール
Microsoft Azureのインストール
Python 3.9 以降をインストール
Postman Desktop または別のAPIテスト ツールをインストール
このチュートリアルには、アクティブなクラスターを持つMongoDB Atlasアカウントと、Microsoft Azureサブスクリプションも必要です。
[Flask]アプリケーションを設定する
次のコマンドを実行中て、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 エンドポイントとなる接続されたデバイスにアクセスし、作成したドキュメントを取得します。
Dockerfile の作成
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 のアプリケーションにアクセスします。
Azure コンテナ Registry の作成
Azure portal にサインインし、コンテナ Registry サービスに移動します。Create をクリックし、レジストリの次の設定を指定します。
リソース グループ:リソースグループの名前
レジストリ名: ログインURLとして使用します
ロケーション: レジストリのロケーション
注意
コンテナ アプリを作成するときは、同じリソース グループとロケーションの値を使用する必要があります。
[Review and Create] をクリックします。
配置が完了したら、Visual Studio Code を開きます。Docker拡張機能をインストールすることを確認します。
Registries に移動し、 Azureアカウントにログインして、レジストリに接続します。
次のコマンドを実行してAzure コンテナ レジストリ にログインします。
docker login <azure registry url>
Tip
ユーザー名とパスワードは、コンテナ レジストリの Access Keys セクションで確認できます。認証情報を表示するには、Admin Access を有効にします。
重要
Windows を使用している場合は、エラーを回避するために右クリックしてターミナルに認証情報を貼り付けます。
Dockerイメージをビルドしてプッシュします
次の手順で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 コンテナ レジストリ にプッシュします。
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 をクリックしてイメージを表示します。
Azure Container App の作成と配置
Azureポータルの コンテナ 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 のドキュメントを参照してください。