Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Node.js stellt eine Verbindung zum MySQL-Docker-Container ECONNREFUSED her

Dies:

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

Bedeutet, dass Docker den 3307 zuordnen wird Port des Hosts auf 3306 Hafen des Containers. Sie können also von Sequel aus auf localhost:3307 zugreifen .

Dies bedeutet jedoch nicht, dass der Container auf 3307 lauscht; der Container hört tatsächlich immer noch auf 3306 . Wenn andere Container versuchen, auf mysql zuzugreifen DNS, es wird in die interne Container-IP übersetzt, daher müssen Sie sich mit 3306 verbinden .

Ihre Knotenkonfiguration sollte also folgendermaßen aussehen:

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

Und das in Ihrer docker-compose.yml:

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