Contenedor Docker con Nginx (Servidor Web y Proxy)

Contenedor Docker con Nginx (Servidor Web y Proxy)
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/html permite 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).