Detta:
mysql:
image: mysql:5.7
environment:
...
ports:
- "3307:3306"
Betyder att Docker kommer att mappa 3307
värdens port till 3306
containerns hamn. Så du kan komma åt från Sequel till localhost:3307
.
Det betyder dock inte att behållaren lyssnar på 3307
; behållaren lyssnar faktiskt fortfarande på 3306
. När andra behållare försöker komma åt mysql
DNS, det översätts till den interna behållarens IP, därför måste du ansluta till 3306
.
Så din nodkonfiguration bör se ut så här:
const config = {
host: 'mysql',
database: 'mydb',
port: '3306',
user: 'mysql',
password: '1234',
connectionLimit: 10
}
Och detta i din docker-compose.yml:
command: ["./wait-for-it.sh", "mysql:3306"]