【问题标题】:Can't connect Node.js app with MySQL on docker无法在 docker 上将 Node.js 应用程序与 MySQL 连接
【发布时间】: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


【解决方案1】:

here 所述,我能够使用 --link 选项连接 docker 映像。 我们还可以使用 --net 选项来使用相同的桥接网络。 https://docs.docker.com/network/bridge/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2020-08-11
    • 2019-11-07
    • 1970-01-01
    • 2015-09-18
    • 2021-12-21
    相关资源
    最近更新 更多