Cover Image for Gyrus Blog

Dev Containers

Cover Image for Dev Containers
Julio Valdivia
Julio Valdivia

Dev Containers

En Gyrus apreciamos la agilidad en los proyectos para poder ofrecer entregables en el menor tiempo posible. En proyectos recientes hemos estado utilizando DBT para la ejecución de procesos ETL. El desarrollo de los pipelines se llevó a cabo en Visual Studio Code, aprovechando el uso de Dev Containers, una solución que ha demostrado ser altamente eficiente y cómoda para crear entornos de desarrollo reproducibles.

¿Qué es un Dev Container?

Tomando como referencia la definición de JetBrains: Un Dev Container es un contenedor de Docker configurado para utilizarse como un entorno de desarrollo completamente funcional. A continuación, veremos un ejemplo práctico de cómo utilizarlo junto con DBT y PostgreSQL, basado en el repositorio público dbt-devcontainer.

Pasos para utilizar un Dev Container con DBT y PostgreSQL:

  1. Clonar el proyecto:
  2. git clone https://github.com/davidgasquez/dbt-devcontainer.git
  3. Abrir el proyecto con Visual Studio Code.
  4. Analizar el archivo devcontainer.json:
    • Especificar la ubicación del archivo docker-compose.yml
    • Definir la configuración del entorno de desarrollo.
    • Establecer la conexión con la base de datos local de PostgreSQL.
    • Incluir las extensiones necesarias en Visual Studio Code.

Es importante revisar el archivo docker-compose.yml, donde se definen los servicios para DBT y PostgreSQL.

  1. Abrir el archivo devcontainer.json para crear el contenedor.
  2. Abrir el puerto de PostgreSQL.
  3. Conectar a la base de datos con DBeaver (o vuestro cliente de BDD preferido). En este punto, no existirá ninguna tabla en la BDD.
  4. Abrir una terminal integrada: Navegar al directorio del proyecto DBT (por ejemplo, dbt/jaffle_shop/) y ejecutar: dbt seed Este comando carga los archivos CSV como tablas en PostgreSQL.
  5. Ejecutar los modelos del proyecto con: dbt run Esto creará las vistas y se cargarán los datos en las tablas customers y orders.

Beneficios

Esta solución permite iniciar rápidamente con proyectos que ya cuentan con un Dev Container preconfigurado, eliminando tareas repetitivas de configuración y acelerando el comienzo del trabajo técnico. Además, facilita la integración de nuevos miembros al equipo, ya que les proporciona un entorno de desarrollo completo y listo para usar. Esto no solo reduce significativamente el tiempo de onboarding en nuevas incorporaciones al proyecto, sino que también promueve la flexibilidad y autonomía, al ofrecer entornos personales, aislados y replicables para cada componente del proyecto.

Conclusión

Los Dev Containers ofrecen múltiples ventajas para equipos de desarrollo:

  • Aumento de productividad
  • Mejora de la calidad
  • Reproducibilidad garantizada
  • Colaboración simplificada

Fuentes consultadas