Desplegar múltiples stacks de muestra
En este paso, aprenderás cómo desplegar múltiples stacks en tu Docker Swarm. Esto demuestra cómo puedes administrar diferentes aplicaciones o servicios de forma independiente dentro del mismo swarm.
Desplegaremos dos stacks simples: uno que utiliza Nginx y otro que utiliza el servidor HTTP Apache.
Primero, creemos un directorio para la definición del stack de Apache. Regresa al directorio ~/project
y crea un nuevo directorio llamado my-apache-stack
.
cd ~/project
mkdir my-apache-stack
cd my-apache-stack
Ahora, crea un archivo llamado docker-compose.yml
dentro del directorio my-apache-stack
utilizando el editor nano
.
nano docker-compose.yml
Pega el siguiente contenido en el archivo docker-compose.yml
:
version: "3.8"
services:
web:
image: httpd:latest
ports:
- "81:80"
deploy:
replicas: 1
restart_policy:
condition: on-failure
Este archivo docker-compose.yml
define un servicio llamado web
que utiliza la imagen httpd:latest
. Mapea el puerto 81 del host al puerto 80 del contenedor para evitar conflictos de puertos con el stack de Nginx que desplegaremos más tarde. También especifica una réplica y una política de reinicio.
Guarda el archivo presionando Ctrl + X
, luego Y
y Enter
.
Antes de desplegar, descarguemos la imagen httpd:latest
.
docker pull httpd:latest
Ahora, despleguemos el stack de Apache utilizando el comando docker stack deploy
. Nombraremos este stack apache_stack
.
docker stack deploy -c docker-compose.yml apache_stack
Este comando desplega el stack de Apache.
A continuación, regresemos al directorio my-nginx-stack
para desplegar nuevamente el stack de Nginx.
cd ~/project/my-nginx-stack
Despleguemos el stack de Nginx utilizando el comando docker stack deploy
. Nombraremos este stack nginx_stack
.
docker stack deploy -c docker-compose.yml nginx_stack
Ahora, verifiquemos que ambos stacks se hayan desplegado. Lista los stacks desplegados.
docker stack ls
Deberías ver tanto apache_stack
como nginx_stack
en la lista.
También puedes comprobar los servicios de cada stack individualmente.
docker stack services apache_stack
docker stack services nginx_stack
Deberías ver el servicio apache_stack_web
y el servicio nginx_stack_web
, ambos en ejecución con 1/1 réplicas.
Puedes acceder al servidor web Apache abriendo un navegador web y navegando a la dirección IP de tu máquina virtual (VM) de LabEx en el puerto 81. Deberías ver la página de bienvenida predeterminada de Apache. El servidor web Nginx debería seguir siendo accesible en el puerto 80.