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.