Con el paso del tiempo, los programadores nos enfrentamos a varios problemas. Dos de los más recurrentes son las actualizaciones y, otro, la gran variedad de entornos con los que algunos trabajamos.
En cuanto al primero, los intérpretes, compiladores y librerías van actualizándose constantemente. En este sentido, es conveniente que nuestros trabajos se desarrollen en entornos más actualizados y seguros. Sin embargo, este hecho conlleva un problema: si mantenemos nuestro entorno de desarrollo actualizado, es posible que no podamos seguir con el mantenimiento de trabajos antiguos de forma conveniente.
Respecto al segundo problema, cabe destacar que la variedad de entornos es muy común en el ámbito en el que trabajamos: diferentes bases de datos con sus diferentes versiones, entornos de ejecución que van cambiando, sistemas operativos, etc.
Y es que, mantener en nuestro equipo o en otros equipos de desarrollo o servidores los diferentes entornos o bases de datos con sus diferentes versiones puede llegar a ser bastante complicado. ¿Qué podemos hacer para solventar estos problemas?
Solución: Docker
Esta herramienta de código abierto te permite, entre otras ventajas, usar máquinas configuradas en cada uno de esos entornos que hemos utilizado a lo largo del tiempo.
Podemos instalar Docker tanto en Windows, Linux o Mac. Si estás interesado, te recomiendo los tutoriales y manuales de instalación que encontrarás en su página web.
Una vez tenemos Docker instalado, podemos acceder a multitud de máquinas preconfiguradas o configurar las nuestras propias a partir de estas.
Ejemplos en los que una máquina Docker puede ser útil
Bases de datos
Utilizar MySQL o Postgres como base de datos de nuestras aplicaciones es bastante común. Para desarrollo se pueden instalar en nuestro propio equipo. Sin embargo, cuando hay que lidiar con varias versiones diferentes de estas, instalarlas en el mismo equipo puede no ser factible.
En Docker podemos encontrar imágenes de todas ellas en sus diferentes versiones. Así mismo, además del servidor de la base de datos, se pueden iniciar gestores web para configurar, restaurar y modificar las bases que estamos utilizando. Aparte de estas, también existen imágenes para bases de datos no relacionales (NoSQL) como MongoDb o CouchDb o servicios como Redis.
Envío de emails en desarrollo
Muchas veces tenemos aplicaciones que envían emails. Una forma de controlar estos correos, comprobar que efectivamente se envían y que tienen el formato correcto es utilizar un servidor smtp de “mentira”. Para ello, tenemos disponibles máquinas como Mailhog, que proporciona un servidor smtp y que a través de su interfaz web podemos ver el contenido completo de los emails que nuestra aplicación envía.
Entornos de desarrollo PHP
PHP se utiliza muchísimo en programación web. Los principales CMS o gestores de contenido como son WordPress o Drupal, u otros destinados a comercio on-line como Prestashop o Magento están desarrollados en este lenguaje. Montar un entorno de desarrollo para ejecutar estos proyectos y poder hacer modificaciones desde nuestro equipo local es muy fácil, ya que Docker nos ofrece máquinas con todas las versiones del lenguaje sobre diferentes versiones de apache.
Control de Docker
En una instalación básica de Docker, el control y configuración de los contenedores o máquinas se realiza a través de la línea de comandos, pero existen otras alternativas. Una de ellas es Portainer, que se instala como un contenedor más y proporciona una interfaz web con la que controlar y configurar los contenedores que tenemos en nuestro sistema.
Otra posibilidad es integrar este control en Visual Studio Code a través de las extensiones Docker y Docker Explorer. Estas, además de facilitarnos la edición de los ficheros de configuración de los contenedores, integran en el entorno del editor la visualización y control de los contenedores.
Fernando Faubell
Desarrollo web
Referencias
Página de Docker https://www.docker.com/
Hub de Docker (repositorio de imágenes) https://hub.docker.com/
Extensiones para VSC
https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker
https://marketplace.visualstudio.com/items?itemName=formulahendry.docker-explorer
[contact-form][contact-field label=»Nombre» type=»name» required=»true» /][contact-field label=»Correo electrónico» type=»email» required=»true» /][contact-field label=»Web» type=»url» /][contact-field label=»Mensaje» type=»textarea» /][/contact-form]