Implementar un Servidor Web con Docker
Creando un Dockerfile
Para implementar un servidor web con Docker, primero necesitas crear un Dockerfile. Un Dockerfile es un archivo de texto que contiene las instrucciones para construir una imagen Docker. Aquí hay un ejemplo de Dockerfile para un servidor web Nginx simple:
## Usa la imagen oficial de Nginx como imagen base
FROM nginx:latest
## Copia el archivo de configuración predeterminado de Nginx
COPY default.conf /etc/nginx/conf.d/default.conf
## Copia el código de la aplicación web al contenedor
COPY app/ /usr/share/nginx/html/
## Exponer el puerto 80 para el tráfico HTTP
EXPOSE 80
## Iniciar el servidor Nginx
CMD ["nginx", "-g", "daemon off;"]
Este Dockerfile:
- Utiliza la imagen oficial de Nginx como imagen base.
- Copia el archivo de configuración predeterminado de Nginx al contenedor.
- Copia el código de la aplicación web al directorio raíz web del contenedor.
- Expone el puerto 80 para el tráfico HTTP.
- Inicia el servidor Nginx.
Construyendo y Ejecutando la Imagen Docker
Una vez que tengas el Dockerfile, puedes construir la imagen Docker usando el comando docker build:
## Construir la imagen Docker
docker build -t my-nginx-server .
Este comando construye la imagen Docker con la etiqueta my-nginx-server usando el Dockerfile en el directorio actual.
Después de construir la imagen, puedes ejecutar un contenedor basado en la imagen usando el comando docker run:
## Ejecutar el contenedor Docker
docker run -d -p 80:80 --name my-nginx-server my-nginx-server
Este comando:
- Ejecuta el contenedor en modo desacoplado (
-d).
- Mapea el puerto 80 del host al puerto 80 del contenedor (
-p 80:80).
- Asigna el nombre
my-nginx-server al contenedor.
- Utiliza la imagen
my-nginx-server para crear el contenedor.
Escalado y Balanceo de Carga
Para escalar tu servidor web, puedes ejecutar varias instancias del contenedor Docker y usar un balanceador de carga para distribuir el tráfico entre las instancias. Aquí hay un ejemplo de cómo puedes hacerlo usando Docker Compose:
version: "3"
services:
web:
build: .
ports:
- 80:80
deploy:
replicas: 3
load-balancer:
image: nginx:latest
ports:
- 8080:80
depends_on:
- web
configs:
- source: nginx-config
target: /etc/nginx/conf.d/default.conf
configs:
nginx-config:
file: ./nginx.conf
Este archivo Docker Compose:
- Construye el servicio
web usando el Dockerfile en el directorio actual.
- Implementa tres réplicas del servicio
web.
- Ejecuta un servicio de balanceador de carga Nginx que escucha en el puerto 8080 y redirige el tráfico a las instancias del servicio
web.
- Monta un archivo de configuración personalizado de Nginx en el contenedor del balanceador de carga.
Al usar Docker Compose y el balanceo de carga, puedes escalar fácilmente tu servidor web y garantizar una alta disponibilidad y tolerancia a fallos.