Ante la ausencia de ninguna guía o tutorial completo en internet para montar con docker un servidor http con apache2 y configurarlo para funcionar con mediante https, he decidido publicar esta entrada.
Antes de nada comentar que esta guía ha sido pensada para montar un servidor de pruebas, si se va a montar un servidor en producción es posible que tengas que realizar configuraciones de seguridad a mayores.
Lo primero necesitamos tener Docker instalado y funcionando. Vamos a partir de la imagen creada por MarvAmBass llamada docker-apache2-ssl-secure: https://github.com/MarvAmBass/docker-apache2-ssl-secure
Ahora vamos a crear un certificado SSL y firmarlo nosotros mismos, para ello vamos a ejecutar el siguiente comando. (al hacerlo así nos saltará una advertencia en el navegador al intentar entrar a nuestra página, si queremos evitar esto tendríamos que comprar un certificado a una entidad verificadora).
mkdir key
cd key
openssl req -x509 -newkey rsa:4086 \
-keyout key.pem -out cert.pem \
-days 3650 -nodes -sha256
Esto generará un archivo key.pem y un archivo cert.pem dentro de la carpeta key.
Ahora vamos a crear la carpeta www donde irán los archivos html que cargará el servidor web.
mkdir www
echo "hola mundo" > index.html
Y por último lanzamos el servidor especificando la carpeta en la que se encuentran las claves y la carpeta donde se encuentran los archivos fuente.
docker run -d -p 80:80 -p 443:443 -v $(pwd)/key/:/etc/apache2/external/ -v $(pwd)/www/:/var/www/html/ marvambass/apache2-ssl-secure
Podemos comprobar que la imagen de Docker está funcionando con el comando docker ps además si navegamos hacia la ruta de nuestro servidor https://localhost/ debería cargar el archivo de prueba que creamos anteriormente.
Todohacker by 4m1g0 is licensed under a Creative Commons.
Estas vivo?
Es porque llevas meses y meses sin responder a nada:(
Hola!
He estado con mucho mucho trabajo estos últimos meses, pero ya empiezo a tener un poco de tiempo 😉
¡Estoy de vuelta!
Saludos!
Un articulo interesante.