Preparar un proyecto simple de Docker Compose
En este paso, prepararemos un proyecto simple de Docker Compose. Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multi-contenedor. Con Compose, utilizas un archivo YAML para configurar los servicios de tu aplicación. Luego, con un solo comando, creas e inicias todos los servicios desde tu configuración.
Como Docker Compose no viene preinstalado en el entorno de LabEx, primero necesitamos instalarlo. Descargaremos el binario de Docker Compose y lo haremos ejecutable.
Primero, descarguemos el binario de Docker Compose. Usaremos curl
para descargar la última versión estable.
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
Este comando descarga el binario de Docker Compose para la arquitectura de tu sistema y lo guarda en /usr/local/bin/docker-compose
.
A continuación, necesitamos hacer que el binario descargado sea ejecutable.
sudo chmod +x /usr/local/bin/docker-compose
Este comando agrega permisos de ejecución al binario de Docker Compose.
Ahora, verifiquemos la instalación comprobando la versión de Docker Compose.
docker-compose --version
Deberías ver la versión instalada de Docker Compose en la salida, lo que confirma que la instalación fue exitosa.
Ahora que Docker Compose está instalado, creemos un proyecto simple. Crearemos un directorio para nuestro proyecto y luego un archivo docker-compose.yml
dentro de él.
Primero, crea un directorio llamado my-compose-app
en tu directorio home.
mkdir ~/project/my-compose-app
Accede al directorio recién creado.
cd ~/project/my-compose-app
Ahora, crearemos un archivo docker-compose.yml
. Este archivo definirá los servicios para nuestra aplicación. Usaremos nano
para crear y editar el archivo.
nano docker-compose.yml
Dentro del editor nano
, pega el siguiente contenido:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: ubuntu:latest
command: tail -f /dev/null
Analicemos este archivo docker-compose.yml
:
version: '3.8'
especifica la versión del formato del archivo Docker Compose.
services:
define los servicios que componen tu aplicación.
web:
define un servicio llamado web
.
image: nginx:latest
especifica que este servicio usará la imagen Docker nginx:latest
. Si la imagen no está disponible localmente, Docker Compose la descargará de Docker Hub.
ports:
mapea el puerto 80 de la máquina host al puerto 80 del contenedor web
.
app:
define un servicio llamado app
.
image: ubuntu:latest
especifica que este servicio usará la imagen Docker ubuntu:latest
.
command: tail -f /dev/null
especifica el comando a ejecutar cuando el contenedor app
inicie. Este comando mantiene el contenedor ejecutándose indefinidamente sin salir.
Guarda el archivo presionando Ctrl + X
, luego Y
, y luego Enter
.
Antes de iniciar los servicios, debemos asegurarnos de que las imágenes Docker requeridas estén disponibles. Aunque Docker Compose descargará las imágenes si no están presentes, es buena práctica descargarlas explícitamente antes, especialmente en entornos con acceso limitado a internet o para un inicio más rápido.
Descarguemos la imagen nginx:latest
.
docker pull nginx:latest
Este comando descarga la imagen nginx:latest
de Docker Hub.
Luego, descarguemos la imagen ubuntu:latest
.
docker pull ubuntu:latest
Este comando descarga la imagen ubuntu:latest
de Docker Hub.
Ahora has preparado exitosamente un proyecto simple de Docker Compose con dos servicios, web
y app
, y has descargado las imágenes Docker necesarias.