Docker と Compose を使用して Azure 内で複数コンテナー アプリケーションを定義して実行する

Compose では、単純なテキスト ファイルを使用して、複数の Docker コンテナーで構成されるアプリケーションを定義します。 次に、定義された環境をデプロイするためのあらゆる操作を実行する単一のコマンドで、アプリケーションを起動します。 たとえば、この記事では、Ubuntu VM のバックエンド MariaDB SQL Database で WordPress ブログをすばやくセットアップする方法を示します。 Compose を使用してさらに複雑なアプリケーションをセットアップすることもできます。

この記事は、2019 年 2 月 14 日に Azure Cloud ShellAzure 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 スタート画面が表示されます。この画面の手順に従ってインストールを完了し、アプリケーションを使用できます。

WordPress のスタート画面

次のステップ