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:

docker pull nginx

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:

docker run --name my-nginx-container -p 8080:80 -d nginx
  • --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.

  1. 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;
        }
    }
}
  1. 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

  1. Descarga la imagen de NGINX desde Docker Hub.
  2. Crea y ejecuta un contenedor NGINX que mapee el puerto 8080 de tu máquina local al puerto 80 del contenedor.
  3. Verifica que NGINX está corriendo accediendo a http://localhost:8080.

Ejercicio 2: Personalizar la Configuración de NGINX

  1. Crea un archivo de configuración nginx.conf en tu máquina local.
  2. Ejecuta un contenedor NGINX utilizando tu archivo de configuración personalizado.
  3. Verifica que la configuración personalizada está en uso.

Ejercicio 3: Servir Contenido Estático

  1. Crea un directorio en tu máquina local con algunos archivos HTML.
  2. Ejecuta un contenedor NGINX que monte este directorio como volumen.
  3. Verifica que los archivos HTML se sirven correctamente accediendo a http://localhost:8080.

Soluciones a los Ejercicios

Solución al Ejercicio 1

docker pull nginx
docker run --name my-nginx-container -p 8080:80 -d nginx

Solución al Ejercicio 2

  1. Crea el archivo nginx.conf:
events {}

http {
    server {
        listen 80;
        server_name localhost;

        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }
    }
}
  1. 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

  1. 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
  1. 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.

© Copyright 2024. Todos los derechos reservados