【发布时间】:2021-12-21 17:23:53
【问题描述】:
我正在尝试在 docker 中运行 Node.js 应用程序。我正在使用 WSL,并为 Node.js 应用程序、MySQL 和 PhpMyAdmin 创建了 docker 映像。现在,当我运行 Node.js 应用程序时,我收到错误 Error: connect ECONNREFUSED 127.0.0.1:3306。是因为 MySQL 在不同的映像上运行吗?是否可以在 wamp 服务器上连接 MySQL?我已经按照教程 here 对 MySQL 进行容器化。为了运行 Node.js,我使用以下命令。
docker build -t gdns/node-app .
winpty docker run \
-it \
--rm \
-v ${PWD}:/app \
-v /app/node_modules \
-p 4001:4000 \
-e CHOKIDAR_USEPOLLING=true \
gdns/node-app
请帮忙。
【问题讨论】:
-
MySQL容器的IP地址与node容器不同,所以不能使用
localhost。如果您需要更多帮助,请发布有关如何运行容器的更多信息。 -
我已经添加了详细信息。
-
如果您可以进一步扩展问题以包括示例中的连接详细信息以及一般minimal reproducible example,这将很有帮助;仅仅
docker run命令并不足以重现任何东西。 From inside of a Docker container, how do I connect to the localhost of the machine?(将数据库位置配置为host.docker.internal,而不是localhost)有帮助吗? -
当您的配置明确规定容器的端口
4000应该发布在主机的端口上时,您能否详细说明为什么将 Node 应用程序配置为与在端口3306上运行的服务器通信4001?这两个端口都不是标准端口,您能否确认您已配置 MySQL 实例已正确配置为侦听容器内的4001? -
@esqew 用于节点应用程序,而不是 MySQL
标签: mysql node.js docker windows-subsystem-for-linux