sql >> Base de Datos >  >> RDS >> Mysql

Node.js se conecta al contenedor MySQL Docker ECONNREFUSED

esto:

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

Significa que Docker mapeará el 3307 puerto del host al 3306 puerto del contenedor. Para que pueda acceder desde Sequel a localhost:3307 .

Sin embargo, no significa que el contenedor esté escuchando 3307; el contenedor, de hecho, sigue escuchando 3306 . Cuando otros contenedores intentan acceder a mysql DNS, se traduce a la IP del contenedor interno, por lo tanto, debe conectarse a 3306 .

Por lo tanto, la configuración de su nodo debería verse así:

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

Y esto en tu docker-compose.yml:

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