Mysql
 sql >> Base de données >  >> RDS >> Mysql

Node.js se connecte au conteneur MySQL Docker ECONNREFUSED

Ceci :

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

Signifie que Docker mappera le 3307 port de l'hôte vers le 3306 port du conteneur. Vous pouvez donc accéder de Sequel à localhost:3307 .

Cependant, cela ne signifie pas que le conteneur écoute 3307; le conteneur écoute en fait toujours 3306 . Lorsque d'autres conteneurs tentent d'accéder au mysql DNS, il est traduit en IP interne du conteneur, vous devez donc vous connecter à 3306 .

La configuration de votre nœud devrait donc ressembler à :

const config = {
    host: 'mysql',
    database: 'mydb',
    port: '3306',
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
}

Et ceci dans votre docker-compose.yml :

command: ["./wait-for-it.sh", "mysql:3306"]