Primeros pasos con Docker: Ejemplos sencillos de Dockerfile y Docker Compose

Primeros pasos con Docker: Ejemplos sencillos de Dockerfile y Docker Compose

  • Ruben
Introducción a Docker
Docker es una plataforma de código abierto que permite crear, desplegar y ejecutar aplicaciones en entornos aislados llamados contenedores. Estos contenedores empaquetan todo lo necesario para que una aplicación funcione (código, bibliotecas, dependencias, etc.), garantizando consistencia entre diferentes entornos (desarrollo, pruebas, producción).

En este artículo, exploraremos los conceptos básicos de Docker a través de ejemplos prácticos con Dockerfile (para construir imágenes personalizadas) y Docker Compose (para orquestar múltiples contenedores).

1. Instalación de Docker
Antes de empezar, instala Docker Desktop (para Windows/macOS) o Docker Engine (para Linux) desde la documentación oficial. Verifica la instalación ejecutando en tu terminal:
docker --version
2. Primeros pasos con Dockerfile
Un Dockerfile es un archivo de texto que define los pasos para construir una imagen personalizada. Aquí tienes un ejemplo para una aplicación Node.js:

Ejemplo de Dockerfile
# Usa una imagen base de Node.js
FROM node:18-alpine

# Establece el directorio de trabajo dentro del contenedor
WORKDIR /app

# Copia los archivos de la aplicación al contenedor
COPY package.json package-lock.json ./

# Instala las dependencias
RUN npm install

# Copia el resto del código
COPY . .

# Expone el puerto 3000 (puerto de la aplicación)
EXPOSE 3000

# Comando para ejecutar la aplicación
CMD ["npm", "start"]


Construir y ejecutar la imagen
Construye la imagen:
docker build -t my-node-app .
Ejecuta un contenedor:
docker run -p 3000:3000
 
Tu aplicación estará disponible en http://localhost:3000

3. Simplificando con Docker Compose
Docker Compose permite definir y gestionar múltiples contenedores en un solo archivo YAML. Ideal para aplicaciones con bases de datos, APIs, frontend, etc.

Ejemplo de docker-compose.yml

version: '3.8'

services:
  web:
    build: .  # Construye la imagen desde el Dockerfile
    ports:
      - "3000:3000"
    volumes:
      - .:/app  # Sincroniza el código en tiempo real
    depends_on:
      - db

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: mydb
    volumes:
      - mysql_data:/var/lib/mysql  # Persistencia de datos

volumes:
  mysql_data:

Comandos clave
Iniciar los contenedores:
docker-compose up
Detener y eliminar contenedores:
docker-compose down
Ejecutar en segundo plano:
docker-compose up -d
4. Explicación del ejemplo
  • web: Define un servicio que construye una imagen desde el Dockerfile actual, mapea el puerto 3000 y sincroniza el código con el contenedor.
  • db: Usa una imagen oficial de MySQL, configura variables de entorno y un volumen para persistir datos.
  • depends_on: Asegura que la base de datos se inicie antes que la aplicación web.
5. Conclusión
Con Docker, puedes garantizar que tu aplicación funcione de manera consistente en cualquier entorno. Los ejemplos anteriores son solo el inicio: explora más opciones como redes personalizadas, variables de entorno o integración con CI/CD.

Recursos adicionales:
¡Empieza a containerizar tus aplicaciones y simplifica tu flujo de trabajo! 🐳

  • Docker
Deja un comentario: