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中文网其他相关文章!