首頁 > 資料庫 > mysql教程 > 為什麼從 Node.js 連接到 MySQL Docker 容器時會出現 ECONNREFUSED?

為什麼從 Node.js 連接到 MySQL Docker 容器時會出現 ECONNREFUSED?

DDD
發布: 2024-11-10 22:22:03
原創
177 人瀏覽過

Why Am I Getting ECONNREFUSED When Connecting to a MySQL Docker Container from Node.js?

連接到MySQL Docker 容器:解決ECONNREFUSED

本文解決了嘗試從以下位置連接到MySQL Docker 容器時經常遇到的ECONEFUSED錯誤: Node.js。

背景

在多容器Docker 化應用程式中,通常有一個資料庫容器(例如MySQL)並從其他容器連接到它(例如,Node.js Web 應用程式)。但是,此連線可能會失敗並出現 ECONNREFUSED 錯誤,表示 Node.js 應用程式無法存取資料庫。

了解問題

設定 Docker 容器時,連接埠對映至關重要。一個常見的誤解是連接埠對映(例如“3307:3306”)意味著容器正在偵聽連接埠 3307。但是,容器通常會偵聽其內部連接埠。對於 MySQL,它會偵聽容器內的連接埠 3306。

解決方案:修改Node.js 配置和DNS

要解決此問題,請修改Node .js 配置連接到連接埠3306 上的資料庫並指定正確的DNS。在本例中,DNS 為 'mysql',如 docker-compose.yml 所定義。

這將更新Node.js 配置,如下所示:

const config = {
    host: 'mysql',  // Replace 'localhost' with the container DNS
    database: 'mydb',
    port: '3306',
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
}
登入後複製

此外,修改docker-compose.yml 中的命令:

command: ["./wait-for-it.sh", "mysql:3306"]  // Update the port number
登入後複製

這可確保「wait-for-it.sh」腳本等待MySQL 偵聽容器內的連接埠3306。

結論

透過了解連接埠對映機制並更新Node.js 配置和DNS,可以解決ECONNREFUSED 錯誤並在Node.js 應用程式和MySQL 之間建立成功的連線Docker 化環境中的容器。

以上是為什麼從 Node.js 連接到 MySQL Docker 容器時會出現 ECONNREFUSED?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板