Mapear directorios y puertos en Docker y Podman
Hace tiempo era un gran enamorado de XAMPP por las posibilidades que me ofrecía a la hora de poder desarrollar páginas web de forma sencilla. Sin embargo, con el paso del tiempo, y sobre todo con la llegada de Docker y Podman a mi flujo de trabajo, este enamoramiento ha visto su fin. Actualmente, en ningún caso, se me ocurriría levantar un XAMPP para desarrollar o modificar alguna de las páginas web que mantengo. Cuando lo necesito, me levanto uno o varios contenedores, según las necesidades y problema resuelto. Sin embargo, algo que siempre me ha llevado de cabeza ha sido esto de mapear los directorios y puertos en Docker y Podman. Mejor dicho en los contenedores que utilizo ya sea con Docker o con Podman.
Así, en este episodio del podcast quiero contarte sobre esto de mapear directorios y puertos en Docker y Podman, donde hago referencia al capítulo sobre ejecutar contenedores con Podman.
Mapear directorios y puertos en Docker y Podman
Entre XAMPP y Docker
Antes de nada, no quiero dejar pasar, ni un minuto, sin hacer de nuevo referencia a esto de utilizar Docker en lugar de XAMPP o LAMP. La cuestión, es que tal y inicialmente era bastante reacio al uso de la tecnología de contenedores. Sin embargo, una vez metido en esto y descubierta las posibilidades que ofrece, es indudable que tiene determinadas ventajas que, evidentemente, no puedes pasar por alto.
Como te decía, actualmente administro varias páginas web, donde cada una de ellas, no tiene porque utilizar ni el mismo servidor web, ni el mismo tipo de base de datos, ni la misma versión. Y por supuesto, tampoco debe o tiene porque utilizar la misma versión de PHP.
Utilizando contenedores, esto lo tengo completamente resuelto, puedo realizar las combinaciones necesarias para conseguir que mi puesto de trabajo sea lo mas similar posible a las condiciones de producción. Pudiendo mezclar todas las combinaciones, sin que influyan unas en otras, y por supuesto sin que influyan en mi equipo de escritorio.
Y sin lugar a dudas, esto es una gran ventaja. Hoy en día, no se me ocurriría, ni remotamente levantar un XAMPP para hacer esto. Simplemente, tengo que tener un docker-compose para cada una de las instalaciones que quiero y levantarlas con simplemente ejecutar una instrucción en el terminal para ponerme a trabajar de inmediato.
Sobre mapear directorios y puertos en Docker y Podman
Sin lugar a dudas algo que inicialmente me traía de cabeza y no terminaba de enteneder era la necesidad de mapear directorios y puertos en Docker y Podman. ¿Por que era necesario?.
Recientemente, como te decía en la introducción, he publicado un artículo sobre ejecutar contenedores, que sinceramente, explica de una forma muy gráfica, que es esto del mapeo de directorios y puertos en Docker y Podman.
Con un ejemplo se entiende la gente
Para esto lo que hice fue implementar una sencilla aplicación realizada en Python. Un servidor web que tenía que servir el contenido de un archivo en un directorio. De forma que si en el archivo aparecía la frase Esto está en un contendor
, tu cuando visitarás la dirección en la que se levantaba la web, vieras precisamente ese contenido.
Una sencilla aplicación
La primera parte del capítulo del tutorial, lo que hace es crear esa aplicación y levantarla directamente, de forma que tu, en tu ordenador, con visitar desde cualquier navegador la dirección http://localhost:5000
vas a ver este contenido.
El contenedor
El siguiente paso, fue convertir esa aplicación en una imagen para lanzarla desde Docker o Podman, y ver que sucedía. Esto es algo relativamente sencillo, y no tiene ninguna complejidad.
Sin embargo, ahora al visitar la dirección indicada anteriormente, nos damos cuenta que no vemos el contenido del contenedor. Realmente, es que ni siquiera vemos la página web. Y esto es así porque el puerto del contenedor, no se correspondió con el puerto del contenedor.
Lo mismo sucede con el contenido. Se muestra un contenido por defecto, no el contenido de un archivo concreto.
Y llega la hora de mapear directorios y puertos
Aquí es cuando nos damos cuenta que falta algo, y es precisamente, ese mapeo entre el puerto del contenedor y el puerto de tu ordenador, de forma que el tráfico lo rediriges de un puerto al otro, y para un observador ambos puertos son el mismo, es como si hicieras un túnel.
De la misma manera para conseguir ver el contenido de un archivo en tu ordenador, tienes que conseguir mapear el directorio de tu ordenador con el directorio del contenedor. Es el mismo caso que en el párrafo anterior, es como si hicieras un túnel, pero en este caso de directorios.
Así, para el contenedor, es como si ese directorio estuviera en el propio contenedor. Mientas que para ti, es completamente transparente, de forma que cualquier cambio que realices en ese archivo, y en en ese directorio, se verá inmediatamente reflejado en la página que estás visitando.
Aplicación al desarrollo
Ahora entenderás la relación con XAMPP. Por ejemplo si estás desarrollando un tema de WordPress, y utilizas un contenedor para ello. Este tema estará en local en tu máquina, porque habrás mapeado ese directorio con el correspondiente del contenedor. De esta manera será transparente para ambos.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Imagen de portada de Capturing the human heart en Unsplash
La entrada Mapear directorios y puertos en Docker y Podman aparece primero en Atareao.