Overview
このチュートリアルでは、MongoDB Atlasを使用する Fluskアプリケーションをコンテナ化し、 Azure Container Apps に配置する方法を説明します。 Azure Container Apps は、インフラストラクチャを管理する必要なく、コンテナ化アプリケーションの配置と管理を簡素化するサーバーレス プラットフォームです。
Tutorial
このチュートリアルでは、次のタスクを完了する方法について説明します。
前提条件を確認します
[Flask]アプリケーションを設定する
Dockerfile の作成
Azure Container Register の作成
Dockerイメージをビルドしてプッシュします
Azure Container App の作成と配置
前提条件を確認します
始める前に、次の前提条件を完了してください。
GitHubリポジトリから Fluk とMongoDBアプリケーションを作成
Docker Desktop のインストール
Python 3.9 以降をインストール
Postman Desktop または別のAPIテスト ツールをインストール
このチュートリアルには、アクティブなクラスターとMicrosoft Azureサブスクライブを持つMongoDB Atlasアカウントも必要です。
[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 Container Register の作成
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 を使用している場合は、エラーを回避するために右クリックしてターミナルに認証情報を貼り付けます。
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 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 をクリックしてイメージを表示します。
Azure Container App の作成と配置
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 のドキュメントを参照してください。