複数のサンプルスタックをデプロイする
このステップでは、Docker Swarm 上に複数のスタックをデプロイする方法を学びます。これにより、同じ Swarm 内で異なるアプリケーションやサービスを独立して管理できることを示します。
Nginx を使用するスタックと、Apache HTTP Server を使用するスタックの 2 つの簡単なスタックをデプロイします。
まず、Apache スタック定義用のディレクトリを作成しましょう。~/project ディレクトリに戻り、my-apache-stack という名前の新しいディレクトリを作成します。
cd ~/project
mkdir my-apache-stack
cd my-apache-stack
次に、nano エディタを使用して my-apache-stack ディレクトリ内に docker-compose.yml という名前のファイルを作成します。
nano docker-compose.yml
以下の内容を docker-compose.yml ファイルに貼り付けます。
version: "3.8"
services:
web:
image: httpd:latest
ports:
- "81:80"
deploy:
replicas: 1
restart_policy:
condition: on-failure
この docker-compose.yml ファイルは、httpd:latest イメージを使用する web という名前のサービスを定義しています。後でデプロイする Nginx スタックとのポート競合を避けるために、ホストのポート 81 をコンテナ内のポート 80 にマッピングしています。また、1 つのレプリカと再起動ポリシーも指定しています。
Ctrl + X を押し、次に Y を押し、最後に Enter を押してファイルを保存します。
デプロイする前に、httpd:latest イメージを取得しましょう。
docker pull httpd:latest
次に、docker stack deploy コマンドを使用して Apache スタックをデプロイします。このスタックの名前は apache_stack とします。
docker stack deploy -c docker-compose.yml apache_stack
このコマンドにより、Apache スタックがデプロイされます。
次に、Nginx スタックを再度デプロイするために my-nginx-stack ディレクトリに戻りましょう。
cd ~/project/my-nginx-stack
docker stack deploy コマンドを使用して Nginx スタックをデプロイします。このスタックの名前は nginx_stack とします。
docker stack deploy -c docker-compose.yml nginx_stack
ここで、両方のスタックがデプロイされたことを確認しましょう。デプロイされたスタックを一覧表示します。
docker stack ls
apache_stack と nginx_stack の両方がリストに表示されるはずです。
また、各スタックのサービスを個別に確認することもできます。
docker stack services apache_stack
docker stack services nginx_stack
apache_stack_web サービスと nginx_stack_web サービスが、どちらも 1/1 のレプリカで実行されているのが表示されるはずです。
Web ブラウザを開き、LabEx VM の IP アドレスのポート 81 にアクセスすることで、Apache Web サーバーにアクセスできます。デフォルトの Apache ウェルカムページが表示されるはずです。Nginx Web サーバーは引き続きポート 80 でアクセス可能です。