Preparar una aplicación multi-servicio simple
En este paso, prepararemos una aplicación multi-servicio simple que utilizaremos a lo largo de este laboratorio para practicar el reinicio de servicios Docker. Esta aplicación consta de dos servicios: un servicio web y un servicio de base de datos. Definiremos estos servicios usando un archivo Docker Compose.
Primero, necesitamos instalar Docker Compose. Como no viene preinstalado en el entorno VM de LabEx, lo descargaremos e instalaremos.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
El primer comando descarga el binario de Docker Compose desde el repositorio oficial de GitHub y lo guarda en /usr/local/bin/docker-compose. Las partes $(uname -s) y $(uname -m) detectan automáticamente tu sistema operativo y arquitectura para descargar el binario correcto. El segundo comando hace que el archivo descargado sea ejecutable.
Ahora, verifiquemos la instalación comprobando la versión de Docker Compose.
docker-compose --version
Deberías ver una salida similar a Docker Compose version v2.20.2.
A continuación, navega al directorio ~/project, que es tu directorio de trabajo para este laboratorio.
cd ~/project
Ahora, crearemos un archivo docker-compose.yml para definir nuestra aplicación multi-servicio. Este archivo especificará los servicios, sus imágenes y cualquier configuración necesaria.
nano docker-compose.yml
Pega el siguiente contenido en el archivo docker-compose.yml:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
En este archivo docker-compose.yml:
version: '3.8' especifica la versión del formato del archivo Docker Compose.
services: define los diferentes servicios en nuestra aplicación.
- El servicio
web usa la imagen nginx:latest, mapea el puerto 80 del host al puerto 80 del contenedor y depende del servicio db. Esto significa que el servicio db se iniciará antes que el servicio web.
- El servicio
db usa la imagen postgres:latest y establece la variable de entorno POSTGRES_PASSWORD, que es requerida por la imagen PostgreSQL.
Guarda el archivo y sal del editor nano (Presiona Ctrl + X, luego Y, luego Enter).
Antes de iniciar los servicios, necesitamos descargar las imágenes Docker necesarias.
docker pull nginx:latest
docker pull postgres:latest
Estos comandos descargan las imágenes nginx:latest y postgres:latest desde Docker Hub.
Finalmente, iniciemos los servicios definidos en nuestro archivo docker-compose.yml.
docker-compose up -d
El comando docker-compose up -d construye, crea e inicia los servicios en segundo plano (modo detached).
Puedes verificar el estado de los servicios en ejecución con el siguiente comando:
docker-compose ps
Deberías ver una salida que indique que ambos servicios, web y db, están en ejecución.