Configurar Docker para una aplicación web implica contenerizar su aplicación y sus dependencias, asegurando entornos consistentes en desarrollo, pruebas y producción. Aquí tienes una guía general que cubre los componentes esenciales:
1. Instalar Docker
Primero, asegúrese de que Docker esté instalado en su sistema. Puede descargar Docker Desktop para su sistema operativo desde el sitio web oficial de Docker. Para herramientas de línea de comandos en Linux, use el administrador de paquetes de su distribución (por ejemplo, sudo apt install docker.io en Ubuntu).
2. Crear un Dockerfile
Un Dockerfile es un archivo de texto que contiene instrucciones para que Docker construya una imagen. Define el entorno, las dependencias y cómo ejecutar su aplicación.
Ejemplo de Dockerfile para una aplicación Node.js:
# Usar una imagen base oficial de Node.js runtime
FROM node:18-alpine
# Establecer el directorio de trabajo en el contenedor
WORKDIR /app
# Copiar package.json y package-lock.json (o yarn.lock)
COPY package*.json ./
# Instalar dependencias de la aplicación
RUN npm install
# Copiar el resto del código de su aplicación
COPY . .
# Exponer el puerto en el que escucha su aplicación
EXPOSE 3000
# Definir el comando para ejecutar su aplicación
CMD [ "npm", "start" ]
Explicación de las instrucciones comunes de Dockerfile:
* FROM <image>: Especifica la imagen base sobre la cual construir.
* WORKDIR /app: Establece el directorio de trabajo actual dentro del contenedor.
* COPY <src> <dest>: Copia archivos y directorios de su máquina host al contenedor.
* RUN <command>: Ejecuta comandos durante el proceso de construcción de la imagen (por ejemplo, instalar dependencias).
* EXPOSE <port>: Informa a Docker que el contenedor escucha en este puerto en tiempo de ejecución.
* CMD ["executable", "param1", "param2"]: Especifica el comando predeterminado a ejecutar cuando el contenedor se inicia.
3. Construir su Imagen Docker
Navegue al directorio raíz de su proyecto (donde se encuentra su Dockerfile) en su terminal y ejecute el comando de construcción:
docker build -t your-app-name .
docker build: El comando para crear una imagen Docker.-t your-app-name: Etiqueta la imagen con un nombre (por ejemplo,my-nodejs-app)..: Especifica el contexto de construcción (el directorio actual), indicando a Docker dónde encontrar elDockerfiley los archivos de la aplicación.
4. Ejecutar su Contenedor Docker
Una vez que la imagen esté construida, puede crear y ejecutar un contenedor a partir de ella.
docker run -p 80:3000 your-app-name
docker run: El comando para iniciar un contenedor.-p 80:3000: Mapea el puerto3000dentro del contenedor (el que su aplicación escucha) al puerto80en su máquina host. Esto le permite acceder a su aplicación a través dehttp://localhost.your-app-name: El nombre de la imagen Docker que desea ejecutar.
Su aplicación web ahora se ejecutará dentro de un contenedor Docker, accesible a través de su navegador.
5. Usar Docker Compose para Aplicaciones Multi-Servicio
Para aplicaciones que involucran múltiples servicios (por ejemplo, una aplicación web y una base de datos), Docker Compose es invaluable. Utiliza un archivo docker-compose.yml para definir y administrar todos los servicios.
Ejemplo de docker-compose.yml para una aplicación Node.js conectada a una base de datos PostgreSQL:
version: '3.8' # Especifica la versión del formato del archivo Compose
services:
web:
build: . # Construir la imagen desde el Dockerfile en el directorio actual
ports:
- "3000:3000"
volumes:
- .:/app # Montar el código local para actualizaciones en vivo (desarrollo)
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydatabase
depends_on:
- db # Asegurar que la base de datos se inicie antes del servicio web
networks:
- app-network
db:
image: postgres:14-alpine # Usar una imagen preconstruida de PostgreSQL
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data # Persistir datos de la base de datos
networks:
- app-network
volumes:
db_data: # Definir el volumen con nombre
networks:
app-network: # Definir una red personalizada
Para usar Docker Compose, coloque el archivo docker-compose.yml en el directorio raíz de su proyecto y ejecute:
docker compose up -d --build
docker compose up: Construye las imágenes (si se usa--build) e inicia los servicios.-d: Ejecuta los contenedores en modo detached (en segundo plano).
Para detener y eliminar los contenedores, redes y volúmenes:
docker compose down
Esta configuración proporciona un entorno reproducible y aislado para su aplicación web, lo que hace que el desarrollo y la implementación sean mucho más fluidos.