Docker Compose 構成を使用してマルチコンテナー (プレビュー) アプリを作成する

Note

サイドカー コンテナー (プレビュー) は、App Service のマルチコンテナー アプリの後継です。 概要については、「チュートリアル: Azure App Service でカスタム コンテナーのサイドカー コンテナーを構成する (プレビュー)」を参照してください。

Web App for Containers には、Docker イメージを柔軟に使用できる機能があります。 このクイックスタートでは、Cloud Shell で Docker Compose 構成を使用して Web App for Containers にマルチコンテナー アプリ (プレビュー) をデプロイする方法を示します。

Web App for Containers のサンプル マルチコンテナー アプリ

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

この記事では、Azure CLI のバージョン 2.0.32 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

サンプルのダウンロード

このクイック スタートでは、Docker にある Compose ファイルを使用します。 構成ファイルは Azure サンプルにあります。

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

Cloud Shell で、クイックスタートのディレクトリを作成し、それに変更します。

mkdir quickstart

cd $HOME/quickstart

次に、以下のコマンドを実行して、サンプル アプリのリポジトリをクイックスタートのディレクトリに複製します。 その後、multicontainerwordpress ディレクトリに移動します。

git clone https://github.com/Azure-Samples/multicontainerwordpress

cd multicontainerwordpress

リソース グループを作成する

リソース グループとは、Web アプリ、データベース、ストレージ アカウントなどの Azure リソースのデプロイと管理に使用する論理コンテナーです。 たとえば、後から簡単な手順で一度にリソース グループ全体を削除することもできます。

Cloud Shell で az group create コマンドを使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを場所米国中南部に作成します。 Standard レベルの Linux 上の App Service がサポートされているすべての場所を表示するには、az appservice list-locations --sku S1 --linux-workers-enabled コマンドを実行します。

az group create --name myResourceGroup --location "South Central US"

通常は、現在地付近の地域にリソース グループおよびリソースを作成します。

コマンドが完了すると、リソース グループのプロパティが JSON 出力に表示されます。

Azure App Service プランの作成

Cloud Shell で az appservice plan create コマンドを使用して、リソース グループに App Service プランを作成します。

次の例では、Standard 価格レベル (--sku S1) を使用して、Linux コンテナー (--is-linux) に myAppServicePlan という名前の App Service プランを作成します。

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku S1 --is-linux

App Service プランが作成されると、Azure CLI によって、次の例のような情報が表示されます。

{
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "geoRegion": "South Central US",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "South Central US",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
}

Docker Compose アプリを作成する

Note

現在、Azure App Service の Docker Compose には、Base64 に変換した場合に 4,000 文字の制限があります。

Cloud Shell ターミナルで az webapp create コマンドを使って、myAppServicePlan App Service プランにマルチコンテナーの Web アプリを作成します。 <app_name> は忘れずに固有のアプリ名に置き換えてください (有効な文字は a-z0-9- です)。

az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app_name> --multicontainer-config-type compose --multicontainer-config-file compose-wordpress.yml

Web アプリが作成されると、Azure CLI によって次の例のような出力が表示されます。

{
  "additionalProperties": {},
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app_name>.azurewebsites.net",
  "enabled": true,
  < JSON data removed for brevity. >
}

アプリの参照

展開されたアプリ (http://<app_name>.azurewebsites.net) を参照します。 アプリの読み込みには数分かかることがあります。 エラーが発生した場合は、数分待ってからブラウザーを更新してください。

Web App for Containers のサンプル マルチコンテナー アプリ

おめでとうございます。Web App for Containers にマルチコンテナー アプリを作成しました。

デプロイのクリーンアップ

サンプル スクリプトの実行後は、次のコマンドを使用してリソース グループとすべての関連リソースを削除することができます。

az group delete --name myResourceGroup

次のステップ