Mysql
 sql >> Database >  >> RDS >> Mysql

Node.js si connette al contenitore MySQL Docker ECONNREFUSED

Questo:

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

Significa che Docker mapperà il 3307 porta dell'host al 3306 porto del container. Quindi puoi accedere da Sequel a localhost:3307 .

Tuttavia, ciò non significa che il contenitore stia ascoltando 3307; il contenitore infatti sta ancora ascoltando 3306 . Quando altri contenitori tentano di accedere a mysql DNS, viene tradotto nell'IP del contenitore interno, quindi devi connetterti a 3306 .

Quindi la configurazione del tuo nodo dovrebbe essere simile a:

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

E questo nel tuo docker-compose.yml:

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