5
respostas

[Dúvida] Não consigo conectar o Sequelize ao MySQL no Docker

Estou tentando implementar Docker em um projeto meu e não consigo connectar o Sequelize ao MySQL que está em um container Docker. O Servidor Node inicia normalmente, mas não connecta ao banco de dados. E quando tento acessar um endpoint recebo este erro "{"message":"connect ECONNREFUSED 127.0.0.1:3307"}" Estes são os arquivos de configuração. Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade

5 respostas

Olá, Samuel! Tudo bem?

Observando o seu arquivo "Docker-compose.yml", mais especificamente no serviço que cria a instância do DB Mysql, você setou o atributo ports com dados faltantes. No caso, nessa sequência você deveria passar duas portas, a que está sendo usada no seu dispositivo e a outro dentro do ambiente da instância do DB que você criou.

De forma resumida, você tem que adicionar a porta que você está utilizando dentro do Docker. Segue um exemplo de como deveria estar o atributo ports do db:

ports:
    - "3307:3307"

Tente aplicar essa modificação no seu arquivo e construa a instância do db novamente, imagino que isso deva resolver a sua situação.

A primeira vez que levantei uma imagem de db Mysql no Docker usei o seguinte artigo como base (é um pouco antigo, mas acho que pode te ajudar): How to Create a MySql Instance with Docker Compose

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Então cara, eu ja tentei fazer isso. Na verdade eu criei originalmente o arquivo assim, mas não funcionou também.

Opa, Samuel!

Com base nisso, peço que compartilhe todo o seu projeto para que eu consiga realizar alguns testes incisivos, buscando entender porque esse problema está acontecendo.

Você poderia compartilhá-lo via GitHub ou pelo Drive do Google? Já que aqui no fórum existe uma restrição de quantidade de caracteres.

Fico no aguardo e à disposição

https://github.com/Salucatelli/challenge-backend-alura-7-edicao

este é o link para o repositório do projeto, se precisar de mais alguma coisa é so falar

Olá, Samuel! Peço desculpa pela demora em respondê-lo.

Depois de um tempinho matutando no seu problema consegui identificá-lo. Nada mais é que a falta de uma configuração no seu arquivo database.js que está na pasta config o arquivo em questão você acabou até colocando no .gitignore então nem está no seu repositório.

Enfim, a configuração que estava faltando era a da porta do banco de dados no Docker, sem essa referência ele tentava conectar no seu DB MySQL local, que provavelmente não tem as mesmas credenciais de acesso. Para resolver o problema basta adicionar a configuração port, segue o exemplo:

module.exports = {
    database: "challengedb",
    username: "root",
    password: "root",
    host: "127.0.0.1",
    port: "3307",
    dialect: "mysql"
    define: {
        timestamps: true,
        underscored: true
    }
}

No mais, lembre-se aplicar essa configuração do Docker do MySql antes de testar:

ports:
    - "3307:3307"
```

Imagino que resolva o seu problema!