首页 >数据库 >mysql教程 >从 Node.js 连接到 MySQL Docker 容器时,为什么会收到 ECONNREFUSED 错误?

从 Node.js 连接到 MySQL Docker 容器时,为什么会收到 ECONNREFUSED 错误?

Susan Sarandon
Susan Sarandon原创
2024-11-11 02:39:02197浏览

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

Node.js 连接到 MySQL Docker 容器 ECONNREFUSED

尝试使用 Node.js 连接到 MySQL Docker 容器时,出现 ECONNREFUSED 错误(例如,ECONNREFUSED 127.0.0.1:3307)可能会发生。此错误表明 Node.js 无法与 MySQL 容器建立连接。

Docker Compose 配置

如提供的 docker-compose.yml 文件中所示,有必要了解端口映射配置(例如 3307:3306)仅指定 Docker 如何将主机端口映射到容器端口。容器本身仍然侦听其默认端口(例如,MySQL 为 3306)。

Node.js 连接配置

要解决 ECONNREFUSED 错误,请确保 Node .js 应用程序配置为连接到 MySQL 容器的内部端口。在提供的示例中,主机属性应设置为“mysql”,端口属性应设置为“3306”。

const config = {
    host: 'mysql',
    database: 'mydb',
    port: '3306',
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
};

Docker Compose 中的命令

此外,应更新 docker-compose.yml 文件中的命令属性,以在端口 3306 而不是 3307 上等待 MySQL。

command: ["./wait-for-it.sh", "mysql:3306"]

注意: 建议使用wait-for-it.sh 脚本,以确保在尝试从 Node.js 连接之前完全初始化 MySQL 容器。该脚本可以从 https://github.com/vishnubob/wait-for-it 获取。

按照以下步骤,应该可以在 Node.js 应用程序和 MySQL 之间建立连接Docker 容器。

以上是从 Node.js 连接到 MySQL Docker 容器时,为什么会收到 ECONNREFUSED 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn