
Primeros pasos con Docker: Ejemplos sencillos de Dockerfile y Docker Compose
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:
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! 🐳
Deja un comentario: