Contenedor Docker con Nginx (Servidor Web y Proxy)
Descubre cómo configurar un contenedor Docker con Nginx para servir aplicaciones web de manera eficiente. Este artículo te guía a través de los pasos para una implementación exitosa y segura.
¿Qué es NGINX?
NGINX es un servidor web/proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electrónico (IMAP/POP3).
Es software libre y de código abierto, licenciado bajo la Licencia BSD simplificada. Es multiplataforma y es conocido por su alta eficiencia y bajo consumo de recursos, siendo utilizado por una larga lista de sitios web de alto tráfico como: WordPress, Netflix, Hulu y partes de Facebook.
Creando el contenedor con docker-compose
1. Preparación del Directorio
Creamos un directorio para alojar el fichero docker-compose.yml y las carpetas para la configuración y los archivos web.
mkdir -p /opt/nginx
cd /opt/nginx
2. Fichero docker-compose.yml
Añadimos el fichero docker-compose.yml con las configuraciones de volumen para hacer persistentes nuestros archivos y configuraciones.
version: "3.3"
services:
nginx:
container_name: nginx
image: nginx:latest
restart: always # Asegura que el contenedor se reinicie si falla o tras un reinicio del sistema
volumes:
# Archivos HTML/Web: Mapea la carpeta del host a la ruta de publicación web de Nginx
- /srv/nginx/public_html:/usr/share/nginx/html
# Configuración Principal: Mapea nginx.conf en modo de solo lectura (:ro)
- /srv/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
# Archivos de Configuración de Sitios (Ej: default.conf)
- /srv/nginx/conf:/etc/nginx/conf.d
ports:
- "10080:80" # HTTP (Servidor:Contenedor)
- "10443:443" # HTTPS (Servidor:Contenedor)
Explicación de Parámetros:
- services: Definición de contenedores, en este caso sólo
"nginx". - container_name: Nombre asignado al contenedor (
nginx). - image: Nombre de la imagen de Docker Hub de NGINX.
- ports: Referencia de los puertos externos con los internos del contenedor. Usamos puertos altos en el servidor (10080, 10443) para mapear a los estándar (80, 443) del contenedor.
- volumes: Conectamos los directorios del contenedor con los del servidor para persistencia. La línea
/srv/nginx/public_html:/usr/share/nginx/htmlpermite desplegar proyectos directamente desde fuera del contenedor.
3. Crear y Arrancar el Contenedor
Creamos y arrancamos el contenedor con el siguiente comando:
docker-compose up -d
4. Verificación y Acceso
Listamos los contenedores Docker para ver que esté funcionando:
docker ps
Ahora comprobamos si está arrancado abriendo una ventana en el navegador con la URL:
http://ip_del_servidor:10080
Para añadir sitios, modificar configuraciones o desplegar archivos web, utiliza las rutas del servidor que hemos vinculado en la sección volumes (ej: /srv/nginx/conf para configuraciones de virtual hosts).