Para los que aún no habéis comenzado a utilizar Docker, os recomiendo revisar la guía oficial Understanding Docker, así como el manual de instalación.
Docker allows you to package an application with all of its dependencies into a standardized unit for software development.
Si todo está apunto en tu entorno, podrás ejecutar sin problema comandos como docker version
, obteniendo algo similar a esto:
1 | $ docker version |
Servidor HTTP básico
nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP proxy server
Como paso inicial, si queremos levantar un contenedor que corra el servicio HTTP de nginx, sólo tenemos que crear un fichero de configuración y especificar allí los detalles de nuestro virtualhost (por ejemplo en el fichero sample.conf
):
1 | server { |
Esta es toda la configuración que tenemos que hacer!! Sólo queda pues, arrancar el contenedor con docker run
:
1 | docker run -p 80:80 \ |
Hay que tener en cuenta que con la opción -p
, mapeamos el puerto 80 del contender al 80 local y con los -v
permitimos que ciertos directorios/ficheros locales se mapeen internamente a las rutas correspondientes en el contenedor. Finalmente, el -d
lanza nuestro proceso como daemon, es decir, en segundo plano.
Configuración SSL
Antes de activar la configuración SSL en nginx, necesitamos contar con un certificado/key SSL para nuestro servidor (server.key
y server.pem
).
A partir de septiembre, podremos contar con certificados gratuitos gracias a Let’s Encrypt.
Para poder utilizarlos, copiaremos ambos ficheros en el directorio certs
, alterando posteriormente la configuración del virtualhost:
1 | server { |
Como en el ejemplo anterior, ya sólo nos queda lanzar de nuevo el contenedor y tendremos el servicio activo (recuerda matar el anterior con docker kill <id contenedor>
:
1 | docker run -p 80:80 -p 443:443 \ |
Como podemos ver en el comando anterior, al tener el SSL activo, tendremos que redireccionar también el puerto 443 y compartir igualmente el directorio de certificados para poderlo referenciar sin problema en la configuración.