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
Barbara Streisandasal
2024-11-12 01:43:02920semak imbas

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"

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
}

Perintah Docker

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

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!

Kenyataan:
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