Docker Compose 構成を使用してマルチコンテナー (プレビュー) アプリを作成する
Note
複数コンテナーは現在プレビュー段階です。
Web App for Containers には、Docker イメージを柔軟に使用できる機能があります。 このクイックスタートでは、Cloud Shell で Docker Compose 構成を使用して 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-z
、0-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 にマルチコンテナー アプリを作成しました。
デプロイのクリーンアップ
サンプル スクリプトの実行後は、次のコマンドを使用してリソース グループとすべての関連リソースを削除することができます。
az group delete --name myResourceGroup