Epic_1_Sprint_1 Implement env - robbiemu/aclarai GitHub Wiki

Tarefa: Implementar injeção de .env e fallback para host.docker.internal para DBs externos

Descrição

Implementar um sistema de injeção de variáveis de ambiente a partir de arquivos .env e configurar fallback para host.docker.internal, permitindo a conexão com bancos de dados externos ao ambiente Docker.

Escopo

Incluído

  • Criação de um sistema de carregamento de variáveis de ambiente a partir de arquivos .env
  • Implementação de lógica de fallback para host.docker.internal quando necessário
  • Configuração de conexões para bancos de dados externos (Neo4j e Postgres)
  • Documentação do uso de variáveis de ambiente e conexões externas
  • Implementação de validação de variáveis obrigatórias
  • Criação de arquivo .env.example com configurações padrão e documentação

Excluído

  • Implementação de sistema de secrets para produção
  • Configuração de autenticação avançada para bancos de dados
  • Implementação de balanceamento de carga para múltiplas instâncias de DB
  • Configuração de SSL/TLS para conexões de banco de dados
  • Migração de dados entre ambientes

Critérios de Aceitação

  • Sistema carrega corretamente variáveis de ambiente a partir de arquivos .env
  • Conexões com bancos de dados externos funcionam quando configuradas via variáveis de ambiente
  • Fallback para host.docker.internal é aplicado automaticamente quando apropriado
  • Validação de variáveis obrigatórias com mensagens de erro claras
  • Documentação clara sobre como configurar conexões externas
  • Arquivo .env.example com todas as variáveis necessárias e comentários explicativos

Dependências

  • Docker Compose stack configurado
  • Definição das variáveis de ambiente necessárias para cada serviço
  • Acesso a bancos de dados externos para testes

Entregáveis

  • Sistema de carregamento de variáveis de ambiente implementado
  • Lógica de fallback para host.docker.internal
  • Arquivo .env.example com documentação
  • Documentação de uso e configuração
  • Testes de conexão com bancos de dados externos

Estimativa de Esforço

  • 1 dia de trabalho

Riscos e Mitigações

  • Risco: Falha na conexão com bancos de dados externos
    • Mitigação: Implementar retry com backoff e logs detalhados de erro
  • Risco: Vazamento de credenciais sensíveis
    • Mitigação: Garantir que arquivos .env não sejam versionados e documentar boas práticas
  • Risco: Incompatibilidade entre diferentes sistemas operacionais
    • [de-prioritized] good for future, but not for this epic
    • Mitigação: Testar em múltiplos ambientes (Linux, macOS, Windows).

Notas Técnicas

  • Utilizar bibliotecas padrão para carregamento de .env (dotenv em Node.js, python-dotenv em Python)
  • Implementar validação de variáveis obrigatórias no início da execução
  • Considerar o uso de valores padrão sensatos para variáveis não críticas
  • Documentar claramente o formato esperado para URLs de conexão
  • Implementar logging detalhado para facilitar diagnóstico de problemas de conexão
  • Considerar diferentes comportamentos de host.docker.internal em diferentes versões do Docker