Ini:
mysql:
image: mysql:5.7
environment:
...
ports:
- "3307:3306"
Berarti Docker akan memetakan 3307
port host ke 3306
pelabuhan kontainer. Jadi Anda dapat mengakses dari Sekuel ke localhost:3307
.
Namun, itu tidak berarti bahwa penampung mendengarkan 3307
; wadah sebenarnya masih mendengarkan 3306
. Saat kontainer lain mencoba mengakses mysql
DNS, itu diterjemahkan ke IP wadah internal, oleh karena itu Anda harus terhubung ke 3306
.
Jadi konfigurasi simpul Anda akan terlihat seperti:
const config = {
host: 'mysql',
database: 'mydb',
port: '3306',
user: 'mysql',
password: '1234',
connectionLimit: 10
}
Dan ini di docker-compose.yml Anda:
command: ["./wait-for-it.sh", "mysql:3306"]