O erro que você está enfrentando com o Prisma, onde ele não aceita a DATABASE_URL fornecida, pode estar relacionado a como as variáveis de ambiente estão sendo interpretadas. Mesmo que as variáveis estejam corretas dentro do container, a maneira como você formou a DATABASE_URL pode ser a causa do problema. Aqui estão algumas sugestões para resolver isso:

  1. Verifique o arquivo .env: Certifique-se de que não há espaços ou caracteres invisíveis na linha da DATABASE_URL. Pode ser útil reescrever a linha manualmente.

  2. Formatação da DATABASE_URL: O formato da sua DATABASE_URL parece correto, mas talvez seja necessário usar as variáveis diretamente no formato correto. Experimente o seguinte formato sem interpolação de variáveis, já que o Prisma pode não estar interpretando corretamente:

    DATABASE_URL=postgresql://blog_local_user:blog_docker@localhost:5432/blog_local_db?schema=public
    

    Certifique-se de que essa string está exatamente como acima, sem espaços desnecessários.

  3. Variáveis de Ambiente no Prisma: Verifique se o Prisma está configurado para usar as variáveis de ambiente corretamente. A maneira mais comum é ter uma configuração similar a esta no seu arquivo schema.prisma:

    datasource db {
      provider = "postgresql"
      url      = env("DATABASE_URL")
    }
    
  4. Verifique o Docker Compose: No seu arquivo docker-compose.yaml, confirme que o serviço do PostgreSQL está configurado corretamente. Um exemplo básico de um serviço PostgreSQL seria:

    version: '3.8'
    services:
      db:
        image: postgres:latest
        environment:
          POSTGRES_USER: blog_local_user
          POSTGRES_PASSWORD: blog_docker
          POSTGRES_DB: blog_local_db
        ports:
          - "5432:5432"
    
  5. Reinicie o Container: Depois de fazer as alterações, não esqueça de reiniciar o container para que as novas configurações sejam aplicadas. Você pode usar:

    docker-compose down
    docker-compose up -d
    
  6. Verifique a versão do Prisma: Se você estiver usando uma versão antiga do Prisma, considere atualizar para a versão mais recente, pois pode haver correções de bugs que resolvem problemas de interpretação de strings de conexão.

  7. Debug com Prisma: Tente executar um comando Prisma com maior verbosidade para obter mais informações sobre o erro:

    npx prisma migrate dev -- --verbose