複数のサンプルスタックをデプロイする
このステップでは、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 でアクセス可能です。