Creación de un contenedor Docker
Comenzar con un issue de GitHub


Investigando la base de código


Probando el contenedor
A continuación, Devin prueba cada contenedor, comenzando con nuestro servidor MongoDB y luego continuando con nuestro entorno de Go. Una vez que los contenedores están en funcionamiento, Devin pasa a probar la aplicación en sí. Al leer el Historial de comandos de Devin, puedo ver que encontró nuestra definición de la API de Swagger y la cargó en el navegador integrado para ver cómo funciona la API de backend.

Depuración
Dado que obtenemos un error de Connection refused, Devin pasa inmediatamente a depurar y corregir la configuración de Docker. Este es un patrón común en el que Devin puede autocorregir errores a medida que avanza en una sesión. Devin corrige rápidamente el problema de configuración, reinicia el contenedor Docker y resume el trabajo que ha completado para nosotros.
- Devin configura un archivo docker-compose.yml además de nuestro Dockerfile. Esto nos da algunos ajustes de orquestación más específicos, como definir cómo funciona nuestra red, cómo se configuran nuestros volúmenes y qué servicios dependen entre sí.
- Devin cambia el proceso de compilación de
go mod tidya un método que nos permite almacenar en caché algunas de las dependencias en nuestra compilación de Docker. - Devin genera un binario de Go enlazado estáticamente en lugar de uno enlazado dinámicamente, lo que debería ser más liviano para nuestra compilación de Docker.
- Devin configura nuestros certificados CA para HTTPS y nos permite usar un archivo .env para la configuración en lugar de pasar variables de entorno directamente.
- Y, lo más notable, Devin añade un servicio de MongoDB en nuestra configuración de Docker que el PR del proyecto no incluye. En él se asume que el desarrollador ya tiene una instancia de MongoDB separada en ejecución.


