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"]