Skip to content

Trabajo en un equipo de desarrollo, actualmente en proyectos con aplicaciones Webs (WEB APPs). Como a muchos equipos, nos llega el momento de replantear la forma en la que desplegamos los cambios generados, porque en este proceso nos encontrábamos con múltiples inconvenientes a la hora de desplegar entre ambientes. Entre ellos, el faltante de dependencias era el más común. 

Al trabajar con docker y generar nuestro Dockerfile, vimos resueltos nuestros problemas a la hora de resolver las dependencias de nuestro proyecto. Pero no vengo a hablarles de todas las bondades que Docker tiene para ofrecer, sino a contarles nuestra experiencia con esta tecnología y algunas de las dificultades con las que nos encontramos (esas que no muchos te cuentan).

Con esto no busco asustarlos ni plantear que implementar Docker es difícil. Es más, como mencioné antes, en nuestro equipo usamos actualmente Docker, y aliento a más desarrolladores, empresas y equipos, para que hagan uso de esta tecnología u otra similar basada en contenedores. ¿Cómo?

Iniciando en el mundo de Docker

Cuando hablamos de aprender a usar Docker, no hablamos de un “hola mundo” Docker, sino de trabajarlo con nuestros proyectos, dependiendo del stack tecnológico que estemos usando en los mismos. De nada nos sirve levantar un contenedor con Apache y PHP, si en nuestro proyecto usamos Python y Django. En ocasiones, encontrar la configuración correcta para nuestro contenedor lleva tiempo de lectura de documentación y búsqueda de información. A continuación les dejo algunos consejos para iniciar con Docker:

  1. Realizar pruebas. 

La forma de interactuar con nuestra infraestructura cambia y, el cómo nuestra app se relaciona con ella también. Menciono esto ya que a veces leyendo o viendo videos sobre Docker o herramientas de contenedores, se habla de lo mágico y rápido que resulta tener nuestro contendor corriendo, como si tirando dos comandos en una terminal se resolviera todo, y la realidad no es así, al menos al principio. El encontrar la configuración correcta para nuestra aplicación termina siendo una tarea ardua en muchos casos, pero al alcanzar esta meta, lo que vamos a lograr es llevar nuestra app a cualquier ambiente, sea on premise o cloud, y que el tiempo de despliegue a nuevos ambientes resulte extremadamente corto y sin problemas.

  1. Los volúmenes.

Otra cuestión puede ser el uso de volúmenes para la persistencia de datos. En caso de tener corriendo en nuestros contenedores una base de datos, necesitamos por fuerza contar con volúmenes alojados en el sistema operativo anfitrión. El aprender a manejar y entender cómo funciona esto, nos ayuda a aprovechar las bondades que puede ofrecernos. Es muy importante tener en cuenta este tema de los volúmenes, ya que si por alguna razón nuestro contenedor se reinicia, vamos a perder toda la información generada en nuestras bases.

3. Nuestros desarrollos

También quiero mencionar que no todo en Docker está resuelto. En ocasiones necesitamos desarrollar nuestras propias soluciones e implementarlas en nuestros contenedores, por lo que recomiendo que se tengan en claro las nociones básicas de cómo funcionan los contenedores. Poder correr comandos en nuestro contendor desde el sistema operativo anfitrión, va a resultar en más de una ocasión muy útil. Un tema más a tener en cuenta respecto de los volúmenes, tiene que ver con el manejo de permisos de carpetas que tienen Windows y Linux, ya que si migramos un volumen de Windows a Linux probablemente necesitemos modificar los permisos de la carpeta en este último.

Nótese que las dificultades mencionadas, en todos los casos, se resuelven con tiempo. ¿Qué quiero decir? Que lo necesario para implementar Docker en los proyectos es invertir tiempo y pasión. A los beneficios y a la potencia de esta tecnología los vamos a ver cuando hayamos pasado por este camino. La idea es que si te encontrás con estas dificultades u otras, entiendas que hay quienes ya las pasaron, que es normal encontrarlas y se pueden superar.

Nosotros, como equipo, venimos transitando este camino y ya estamos aprovechando las bondades de los contenedores, llevando nuestras aplicaciones a múltiples sistemas operativos, distribuciones y ambientes, de forma exitosa y rápida.

¿Vale la pena aprender Docker?

Sí, totalmente. Hoy no pensaría comenzar un proyecto nuevo de aplicaciones web que no estuviera alojado en un contenedor. Miro hacia atrás, veo cómo hacíamos las cosas antes y el tiempo que nos llevaba estandarizar los ambientes y me alegra estar caminando Docker. ¿Y ustedes? ¿Qué experiencia tienen con esta herramienta?