首页 >数据库 >mysql教程 >为什么我的 Node.js 应用程序在连接到 MySQL Docker 容器时出现 ECONNREFUSED 错误?

为什么我的 Node.js 应用程序在连接到 MySQL Docker 容器时出现 ECONNREFUSED 错误?

Linda Hamilton
Linda Hamilton原创
2024-11-11 00:01:03602浏览

Why Does My Node.js App Get an ECONNREFUSED Error When Connecting to a MySQL Docker Container?

Node.js 与 MySQL Docker 容器的连接 ECONNREFUSED

问题:

尽管有Docker 撰写具有链接的 MySQL 和 Node.js 容器的文件,Node.js 应用程序在尝试使用端口 3307 连接到 MySQL 容器时遇到 ECONNREFUSED 错误。

分析:

Docker compose 文件将主机的 3307 端口映射到容器中的 3306。但是,MySQL 容器正在内部侦听 3306。这导致 Node.js 尝试连接到主机的端口 3307 的问题,该端口不是容器正在侦听的端口。

解决方案:

要解决此问题,请调整 MySQL 配置和 Docker compose 文件,如下所示:

修改的 MySQL 配置:

const config = {
    host: 'mysql',  // Use the MySQL container DNS name
    database: 'mydb',
    port: '3306',  // Match the port the MySQL container is listening on
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
}

修改的 Docker Compose 文件:

command: ["/bin/bash", "./wait-for-it.sh", "mysql:3306"]  // Match the port MySQL is listening on

通过进行这些修改,Node.js 应用程序现在将使用正确的端口连接到 MySQL 容器,并且 ECONNREFUSED 错误应该得到解决。

以上是为什么我的 Node.js 应用程序在连接到 MySQL Docker 容器时出现 ECONNREFUSED 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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