Dit:
mysql:
image: mysql:5.7
environment:
...
ports:
- "3307:3306"
Betekent dat Docker de 3307
. zal toewijzen poort van de host naar de 3306
haven van de container. Dus je hebt toegang van Sequel tot localhost:3307
.
Dit betekent echter niet dat de container luistert naar 3307
; de container luistert in feite nog steeds naar 3306
. Wanneer andere containers toegang proberen te krijgen tot de mysql
DNS, het wordt vertaald naar het interne container-IP, daarom moet u verbinding maken met 3306
.
Dus je node-configuratie zou er als volgt uit moeten zien:
const config = {
host: 'mysql',
database: 'mydb',
port: '3306',
user: 'mysql',
password: '1234',
connectionLimit: 10
}
En dit in je docker-compose.yml:
command: ["./wait-for-it.sh", "mysql:3306"]