Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Node.js conecta-se ao contêiner MySQL Docker ECONNREFUSED


Esse:
mysql:
    image: mysql:5.7
    environment:
    ...
    ports:
      - "3307:3306"

Significa que o Docker mapeará o 3307 porta do host para o 3306 porto do recipiente. Então você pode acessar do Sequel para localhost:3307 .

No entanto, isso não significa que o contêiner está ouvindo 3307; o contêiner ainda está ouvindo 3306 . Quando outros containers tentam acessar o mysql DNS, ele é traduzido para o IP do contêiner interno, portanto, você deve se conectar ao 3306 .

Portanto, sua configuração de nó deve se parecer com:
const config = {
    host: 'mysql',
    database: 'mydb',
    port: '3306',
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
}

E isso no seu docker-compose.yml:
command: ["./wait-for-it.sh", "mysql:3306"]