En este tema, aprenderemos cómo utilizar NGINX con Docker. Docker es una plataforma que permite desarrollar, enviar y ejecutar aplicaciones dentro de contenedores. Los contenedores son entornos ligeros y portátiles que incluyen todo lo necesario para ejecutar una aplicación, lo que facilita la implementación y escalabilidad.
Objetivos de Aprendizaje
- Comprender los conceptos básicos de Docker.
- Aprender a crear un contenedor Docker para NGINX.
- Configurar NGINX dentro de un contenedor Docker.
- Realizar pruebas y solucionar problemas comunes.
Conceptos Básicos de Docker
¿Qué es Docker?
Docker es una herramienta diseñada para facilitar la creación, implementación y ejecución de aplicaciones mediante el uso de contenedores. Los contenedores permiten a los desarrolladores empaquetar una aplicación con todas sus partes (como bibliotecas y otras dependencias) y enviarla como una sola unidad.
Componentes Clave de Docker
- Docker Engine: El motor que permite la creación y ejecución de contenedores.
- Docker Images: Plantillas de solo lectura utilizadas para crear contenedores.
- Docker Containers: Instancias ejecutables de imágenes de Docker.
- Docker Hub: Un registro de imágenes de Docker donde se pueden almacenar y compartir imágenes.
Creando un Contenedor Docker para NGINX
Paso 1: Instalación de Docker
Antes de comenzar, asegúrate de tener Docker instalado en tu sistema. Puedes seguir las instrucciones de instalación en la documentación oficial de Docker.
Paso 2: Descargar la Imagen de NGINX
Docker Hub tiene una imagen oficial de NGINX que podemos usar. Para descargarla, ejecuta el siguiente comando en tu terminal:
Paso 3: Crear y Ejecutar un Contenedor NGINX
Una vez que la imagen de NGINX esté descargada, podemos crear y ejecutar un contenedor con el siguiente comando:
--name my-nginx-container
: Asigna un nombre al contenedor.-p 8080:80
: Mapea el puerto 8080 de tu máquina local al puerto 80 del contenedor.-d
: Ejecuta el contenedor en segundo plano (detached mode).nginx
: Especifica la imagen de Docker a utilizar.
Paso 4: Verificar la Ejecución de NGINX
Para verificar que NGINX está corriendo, abre tu navegador web y navega a http://localhost:8080
. Deberías ver la página de bienvenida de NGINX.
Configuración de NGINX en un Contenedor Docker
Personalizando la Configuración de NGINX
Para personalizar la configuración de NGINX, puedes crear un archivo de configuración en tu máquina local y montarlo en el contenedor.
- Crea un archivo de configuración
nginx.conf
en tu máquina local:
events {} http { server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
- Ejecuta el contenedor montando el archivo de configuración:
docker run --name my-custom-nginx -p 8080:80 -v /ruta/a/tu/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx
-v /ruta/a/tu/nginx.conf:/etc/nginx/nginx.conf:ro
: Monta el archivo de configuración local en el contenedor.:ro
indica que el archivo es de solo lectura.
Montando Volúmenes para Contenido Estático
Para servir contenido estático desde tu máquina local, puedes montar un volumen:
docker run --name my-static-nginx -p 8080:80 -v /ruta/a/tu/contenido:/usr/share/nginx/html:ro -d nginx
-v /ruta/a/tu/contenido:/usr/share/nginx/html:ro
: Monta el directorio local que contiene tu contenido estático en el contenedor.
Ejercicios Prácticos
Ejercicio 1: Crear un Contenedor NGINX
- Descarga la imagen de NGINX desde Docker Hub.
- Crea y ejecuta un contenedor NGINX que mapee el puerto 8080 de tu máquina local al puerto 80 del contenedor.
- Verifica que NGINX está corriendo accediendo a
http://localhost:8080
.
Ejercicio 2: Personalizar la Configuración de NGINX
- Crea un archivo de configuración
nginx.conf
en tu máquina local. - Ejecuta un contenedor NGINX utilizando tu archivo de configuración personalizado.
- Verifica que la configuración personalizada está en uso.
Ejercicio 3: Servir Contenido Estático
- Crea un directorio en tu máquina local con algunos archivos HTML.
- Ejecuta un contenedor NGINX que monte este directorio como volumen.
- Verifica que los archivos HTML se sirven correctamente accediendo a
http://localhost:8080
.
Soluciones a los Ejercicios
Solución al Ejercicio 1
Solución al Ejercicio 2
- Crea el archivo
nginx.conf
:
events {} http { server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
- Ejecuta el contenedor:
docker run --name my-custom-nginx -p 8080:80 -v /ruta/a/tu/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx
Solución al Ejercicio 3
- Crea un directorio y añade archivos HTML:
mkdir /ruta/a/tu/contenido echo "<h1>Hola, NGINX con Docker!</h1>" > /ruta/a/tu/contenido/index.html
- Ejecuta el contenedor:
docker run --name my-static-nginx -p 8080:80 -v /ruta/a/tu/contenido:/usr/share/nginx/html:ro -d nginx
Conclusión
En esta sección, hemos aprendido cómo utilizar NGINX con Docker, desde la creación de un contenedor básico hasta la personalización de la configuración y el servicio de contenido estático. Docker facilita la implementación y escalabilidad de aplicaciones, y NGINX es una herramienta poderosa para servir contenido web de manera eficiente. Con estos conocimientos, estás preparado para integrar NGINX en tus flujos de trabajo basados en contenedores.
Curso de NGINX
Módulo 1: Introducción a NGINX
Módulo 2: NGINX como Servidor Web
- Sirviendo Contenido Estático
- Listados de Directorios
- Páginas de Error Personalizadas
- Registro y Formatos de Registro
Módulo 3: NGINX como Proxy Inverso
- Introducción al Proxy Inverso
- Configurando un Proxy Inverso
- Balanceo de Carga
- Verificaciones de Salud