Criando um Container Docker
Comece com uma issue do GitHub


Investigando a base de código


Testando o container
Devin então passa a testar cada container, começando pelo nosso servidor MongoDB e depois seguindo para o nosso ambiente Go. Assim que os containers estão em execução, Devin passa a testar o próprio aplicativo. Ao ler o Histórico de Comandos do Devin, vejo que ele encontrou nossa definição de API Swagger e a carregou no Browser integrado para entender como a API de backend funciona.

Depuração
Como recebemos um erro de Connection refused, Devin imediatamente inicia a depuração e correção da configuração do Docker. Esse é um padrão comum em que Devin consegue se autocorrigir à medida que avança em uma sessão. Devin corrige rapidamente o problema de configuração, reinicia o contêiner Docker e resume o trabalho concluído para nós.
- Devin configura um arquivo docker-compose.yml além do nosso Dockerfile. Isso nos dá configurações de orquestração mais específicas, como definir como nossa rede funciona, como nossos volumes são configurados e de quais serviços outros serviços dependem.
- Devin altera o processo de build de
go mod tidypara um método que nos permite armazenar em cache algumas das dependências no nosso build Docker. - Devin gera um binário Go estaticamente ligado em vez de dinamicamente ligado, o que deve deixar nosso build Docker mais leve.
- Devin configura nossos certificados de CA para HTTPS e nos permite usar um arquivo .env para configuração em vez de passar variáveis de ambiente diretamente.
- E, principalmente, Devin adiciona um serviço MongoDB na nossa configuração Docker, algo que o PR do projeto não faz. Ele assume que o desenvolvedor já tem uma instância separada de MongoDB em execução.


