Docker と Compose を使用して Azure 内で複数コンテナー アプリケーションを定義して実行する
Compose では、単純なテキスト ファイルを使用して、複数の Docker コンテナーで構成されるアプリケーションを定義します。 次に、定義された環境をデプロイするためのあらゆる操作を実行する単一のコマンドで、アプリケーションを起動します。 たとえば、この記事では、Ubuntu VM のバックエンド MariaDB SQL Database で WordPress ブログをすばやくセットアップする方法を示します。 Compose を使用してさらに複雑なアプリケーションをセットアップすることもできます。
この記事は、2019 年 2 月 14 日に Azure Cloud Shell と Azure CLI バージョン 2.0.58 を使用して最後にテストされました。
Azure CLI で Docker ホストを作成する
最新の Azure CLI をインストールし、az login を使用して Azure アカウントにログインします。
最初に、az group create で Docker 環境のリソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。
az group create --name myDockerGroup --location eastus
cloud-init.txt というファイルを作成し、次の構成を貼り付けます。 sensible-editor cloud-init.txt
を入力し、ファイルを作成して使用可能なエディターの一覧を確認します。
#include https://get.docker.com
ここで az vm create を使用して VM を作成します。 --custom-data
パラメーターを使用して、cloud-init 構成ファイルを渡します。 現在の作業ディレクトリの外部に構成ファイル cloud-init.txt を保存していた場合には、このファイルの完全パスを指定します。 次の例では、myDockerVM という VM を作成し、Web トラフィックに対してポート 80 を開きます。
az vm create \
--resource-group myDockerGroup \
--name myDockerVM \
--image UbuntuLTS \
--admin-username azureuser \
--generate-ssh-keys \
--custom-data cloud-init.txt
az vm open-port --port 80 \
--resource-group myDockerGroup \
--name myDockerVM
VM が作成され、パッケージがインストールされて、アプリが開始されるには、数分かかります。 Azure CLI がプロンプトに戻った後にも引き続き実行するバック グラウンド タスクがあります。 VM が作成されたら、Azure CLI によって表示される publicIpAddress
をメモしてください。
Compose のインストール
新しい Docker ホスト VM に SSH 接続します。 実際の IP アドレスを入力します。
ssh azureuser@10.10.111.11
VM に Compose をインストールします。
sudo apt install docker-compose
docker-compose.yml 構成ファイルの作成
docker-compose.yml
構成ファイルを作成して、VM 上で実行される Docker コンテナーを定義します。 このファイルでは、各コンテナーで実行するイメージ、必要な環境変数と依存関係、ポート、コンテナー間のリンクを指定します。 yml ファイルの構文の詳細については、 Compose ファイルのリファレンスをご覧ください。
docker-compose.yml ファイルを作成します。 任意のテキスト エディターを使って何らかのデータをファイルに追加します。 次の例では、sensible-editor
で目的のエディターを選択するためのメッセージを含むファイルを作成します。
sensible-editor docker-compose.yml
次の例を Docker Compose ファイルに貼り付けます。 この構成では、 DockerHub Registry から取得したイメージを使用して、WordPress (オープン ソースのブログ作成およびコンテンツ管理システム)、およびリンクされたバックエンド MariaDB SQL Database がインストールされます。 実際の MYSQL_ROOT_PASSWORD を入力します。
wordpress:
image: wordpress
links:
- db:mysql
ports:
- 80:80
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: <your password>
Compose によるコンテナーの起動
docker-compose.yml ファイルと同じディレクトリで、次のコマンドを実行します (環境によっては、sudo
を実行するのに docker-compose
が必要な場合があります)。
sudo docker-compose up -d
このコマンドにより、docker-compose.yml で指定された Docker コンテナーが起動されます。 この手順は、完了までに 1 ~ 2 分かかります。 次のような出力が表示されます。
Creating wordpress_db_1...
Creating wordpress_wordpress_1...
...
コンテナーが起動していることを確認するために、「 sudo docker-compose ps
」と入力します。 次のような結果が表示されます。
Name Command State Ports
-----------------------------------------------------------------------------------
azureuser_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
azureuser_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:80->80/tcp
ポート80 で VM 上の WordPress に直接接続できます。 Web ブラウザーを開き、VM の IP アドレス名を入力します。 WordPress スタート画面が表示されます。この画面の手順に従ってインストールを完了し、アプリケーションを使用できます。
次のステップ
- 複数コンテナー アプリのビルドとデプロイに関するその他の例については、Compose コマンド ラインのリファレンスおよびユーザー ガイドをご覧ください。
- 自分で用意するか コミュニティから取得した Azure リソース マネージャー テンプレートを利用して、Docker を搭載した Azure VM や Compose を搭載したアプリケーション セットアップをデプロイできます。 たとえば、 Deploy a WordPress blog with Docker テンプレートは、Docker と Compose を使用して、Ubuntu VM に WordPress と MySQL バックエンドを迅速にデプロイします。
- Docker Compose と Docker Swarm クラスターを統合できます。 シナリオについては、「 Using Compose with Swarm (Compose と Swarm の使用) 」をご覧ください。