Contenedor docker con Nginx
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; también existe una versión comercial distribuida bajo el nombre de nginx plus. Es multiplataforma, por lo que corre en sistemas tipo Unix (GNU/Linux, BSD, Solaris, Mac OS X, etc.) y Windows.
El sistema es usado por una larga lista de sitios web conocidos, como: WordPress, Netflix, Hulu, GitHub, Ohloh, SourceForge, TorrentReactor y partes de Facebook (como el servidor de descarga de archivos zip pesados).
Creando el contendor con docker-compose
Creamos un directorio para alojar el fichero. Por ejemplo, en mi caso.
mkdir /opt/nginx
Cambiamos al directorio creado y añadimos el fichero docker-compose.yml. Puedes crearlo con un editor de texto como nano o vim o descargarlo de aquí
version: "3.3"
services:
nginx:
container_name: nginx
image: nginx:latest
volumes:
- /srv/nginx/public_html:/usr/share/nginx/html
- /srv/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- /srv/nginx/conf:/etc/nginx/conf.d
ports:
- "10080:80"
- "10443:443"
services : definición de contenedores, en este caso sólo"nginx" container_name: nombre para denominar el contenedor image : nombre de la imagen de dockerhub de mysql ports : referencia de los puertos externos con los internos del contenedor (Externo:Interno). Conectamos el puerto 10080 del servidor con el 80 del contenedor para http. Conectamos el puerto 10443 del servidor con el 443 del contenedor para https. volumes : referencia de directorios externos con los internos del contenedor (Externo:Interno). Conectamos los directorios del contenedor indicados con los del servidor para poder acceder a la configuración sin tener que entrar en el contenedor. Para este ejemplo he añadido /srv/nginx/public_html:/usr/share/nginx/html para poder desplegar algunos proyectos directamente desde fuera del contenedor. restart: “always”, siempre.
Crear y arrancar el contenedor con el siguiente comando:
docker-compose up -d
Listamos los contenedores docker y vemos que está arrancando y funcionando.
docker ps
Ahora comprobamos si esta arrancado abriendo una ventana en el navegador con la url (http://ip_del_servidor:10080 “Enlace a página inicial de nginx”).
Para añadir sitios y cambiar la configuración desde fuera del contenedor con las rutas que hemos vinculado en “volumes”.