Rumah > pangkalan data > tutorial mysql > Mengapa saya mendapat ECONNREFUSED apabila menyambung ke bekas MySQL daripada aplikasi Node.js saya?

Mengapa saya mendapat ECONNREFUSED apabila menyambung ke bekas MySQL daripada aplikasi Node.js saya?

Barbara Streisand
Lepaskan: 2024-11-12 01:43:02
asal
890 orang telah melayarinya

Why am I getting ECONNREFUSED when connecting to MySQL container from my Node.js application?

Node.js ECONNREFUSED Semasa Menyambung ke MySQL Docker Container

Dalam Docker, buat persediaan yang melibatkan bekas MySQL dan perkhidmatan web Node.js , menyambung ke MySQL daripada Node.js mengakibatkan ralat ECONNREFUSED, walaupun mempunyai Docker yang mantap pautan dan tetapan pangkalan data yang dikonfigurasikan dengan betul.

Pernyataan Masalah

Masalah ini berpunca daripada salah faham pemetaan port Docker. Dalam fail karang Docker:

ports:
  - "3307:3306"
Salin selepas log masuk

Ini memetakan port hos 3307 ke port kontena 3306. Walaupun ini membenarkan akses luaran ke pangkalan data bekas MySQL daripada hos, ia tidak mengubah port dalaman bekas itu terus mendengar.

Penyelesaian

Untuk menyelesaikan isu itu, Konfigurasi Node.js dan arahan Docker telah dilaraskan:

Konfigurasi Node.js

const config = {
    host: 'mysql', // Use the Docker service name instead of 'localhost'
    database: 'mydb',
    port: '3306', // Connect to the container's native port
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
}
Salin selepas log masuk

Perintah Docker

command: ["./wait-for-it.sh", "mysql:3306"] // Wait for the MySQL container to start on port 3306
Salin selepas log masuk

Penjelasan

Dengan menggunakan Nama perkhidmatan Docker (mysql) sebagai hos dalam konfigurasi Node.js, kami memastikan bahawa percubaan sambungan dibuat kepada bekas, bukan hos. Selain itu, dengan menukar argumen skrip tunggu-untuk-itu kepada 3306, kami menunggu MySQL bersedia pada port asalnya dalam bekas.

Setelah perubahan ini dilaksanakan, ralat ECONNREFUSED telah diselesaikan dan Aplikasi Node.js berjaya menyambung ke bekas MySQL Docker.

Atas ialah kandungan terperinci Mengapa saya mendapat ECONNREFUSED apabila menyambung ke bekas MySQL daripada aplikasi Node.js saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan