Dockerización de aplicaciones Rails

¿Cómo Dockerizar una aplicación Rails existente?

Un desarrollador curioso y apasionado por la tecnología, ¡que nunca deja pasar la oportunidad de aprender algo nuevo cada día! Esa ganas de aprender es algo con lo que NOSOTROS nos identificamos. En esta entrada, te mostraremos Cómo implementar una aplicación Rails en Docker con la ayuda de Rails Docker Compose. Necesitamos Docker, así que deberías saber qué es y por qué es necesario.

Empecemos con el desarrollo de aplicaciones y la «dockerización».

¿Qué es Docker?

Utilizando Docker, puedes empaquetar un servicio o una aplicación, junto con todas sus dependencias, en una unidad estandarizada. Para este tipo de unidad se suele utilizar una imagen de Docker.

Se incluyen todos los componentes necesarios para ejecutar la aplicación. Las imágenes de Docker contienen código, entornos de ejecución, bibliotecas y cualquier otro elemento que se instalaría en un servidor para que funcionaran sin Docker.

¿En qué se diferencia Docker de una máquina virtual?

Es posible que hayas ejecutado una máquina virtual con Vagrant, VirtualBox o VMware. A pesar de que permiten aislar los servicios, las máquinas virtuales son mucho menos eficientes debido a algunas diferencias importantes.

Para cada aplicación que quieras aislar, necesitas un sistema operativo invitado completo. Además, las máquinas virtuales pueden tardar varios segundos en arrancar, y cada una puede ocupar hasta un gigabyte.

Un contenedor de Docker comparte el núcleo del equipo anfitrión, y el aislamiento se consigue mediante grupos y otras bibliotecas del núcleo. Gracias a la ligereza de Docker, un contenedor suele iniciarse en unos pocos milisegundos y no requiere mucho espacio en disco para ejecutarse.

¿Cuál es la conclusión?

¿No sería estupendo que pudieras desarrollar tu Aplicación de rieles en tu estación de trabajo de forma aislada, sin utilizar RVM ni Chruby, y cambiar de versión de Ruby fuera sencillo?

¿No sería estupendo poder aislar todo lo que necesitas para cada uno de tus 10 proyectos de Rails sin malgastar el valioso espacio de almacenamiento del SSD?

¿No sería estupendo poder poner en marcha tu pila de Rails, PostgreSQL, Redis y Sidekiq en solo unos segundos?

¿Te imaginas si pudieras compartir tu proyecto en GitHub y en otras desarrolladores ¿Podría ponerlo todo en marcha en cuestión de minutos con un solo comando?

Gracias a Docker, todo esto es posible.

Las ventajas de utilizar Docker

Docker ofrece cinco ventajas clave que mejorarán tu productividad en el desarrollo de software y tu experiencia en general:

1. Coherencia entre entornos

Tu aplicación se puede encapsular con Docker para que se pueda trasladar fácilmente de un entorno a otro. Todos los entornos y máquinas compatibles con Docker podrán ejecutarla.

2. Formas sencillas de ampliar tu equipo de desarrollo

Un desarrollador novel no debería tener que leer un documento de 30 páginas para aprender a ejecutar tu aplicación de forma local. Es probable que los desarrolladores noveles cometan errores durante este proceso, que puede llevarles todo el día o incluso más tiempo.

Con Docker, puedes implementar tu aplicación multiservicio de forma automatizada, repetible y eficiente en todo tu equipo. Con solo unos pocos comandos, todo estará en funcionamiento.

3. Elige una tecnología que se adapte a tus necesidades

Si eres una startup o una tienda que solo utiliza un idioma, podrías estar poniéndote en desventaja. Como desarrollador, puedes experimentar con nuevos lenguajes y marcos de trabajo aislando una aplicación en un contenedor de Docker.

Ya no es necesario que otros desarrolladores configuren la tecnología que elijas. Pueden ejecutar una imagen de Docker que tú les facilites.

4. Implementa tu imagen varias veces tras compilarla una sola vez

La imagen de Docker preconfigurada permite iniciar tus aplicaciones en milisegundos. Gracias a ello, la escalabilidad resulta muy sencilla.

Las tareas que requieren mucho tiempo, como la instalación de dependencias, solo es necesario ejecutarlas una vez durante la compilación. En cuanto se haya compilado la imagen, podrás trasladarla a diferentes servidores.

Además de hacer que tus implementaciones sean más predecibles y resistentes, esto te permite ampliar o reducir la capacidad rápidamente.

5. Los responsables de operaciones y los desarrolladores pueden trabajar juntos

Los desarrolladores y los responsables de operaciones pueden colaborar utilizando el conjunto de herramientas de Docker para implementar aplicaciones.

Docker proporciona una abstracción. Una aplicación puede distribuirse sin que otro equipo tenga que saber cómo instalarla o configurarla.

Además, resulta más fácil distribuir imágenes de Docker, tanto de forma pública como privada. A medida que se publican nuevas versiones, puedes hacer un seguimiento de los cambios introducidos.

Los requisitos previos

Es necesario instalar Docker. Docker se puede ejecutar en la mayoría de las principales distribuciones de Linux, y existen herramientas que permiten ejecutarlo también en OS X y Windows.

Los usuarios de Linux sacarán partido de este tutorial, pero los de OS X y Windows encontrarán indicaciones sobre los ajustes que deben realizar.

Instalación de Docker

Puedes seguir una de las guías de instalación que aparecen a continuación, según tu sistema operativo:

  • Linux: https://docs.docker.com/get-started/
  • Windows y Mac: https://www.docker.com/products/docker-desktop

Se recomienda que tengas instalado Docker y que hayas completado el ejemplo «hello world» de una de las guías de instalación anteriores antes de continuar.

Conclusión

La contenedorización de un entorno de producción Aplicación de rieles Esto conlleva una serie de retos, como sin duda ya sabrás. Es posible que, a medida que tu aplicación ha ido creciendo, hayas acumulado una serie de dependencias, lo que hace que una migración como esta resulte complicada. No importa si se trata de un proceso en segundo plano, un sistema de correo electrónico o un secreto: existen patrones consolidados para sortear la mayoría de los escollos. La facilidad con la que se podrán realizar cambios e implementaciones en el futuro hará que la inversión merezca la pena una vez completado el trabajo inicial de adaptar una aplicación en producción para que funcione con Docker.

Artículos Relacionados

Acerca del autor de la publicación

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


es_ESSpanish