繁体   English   中英

从另一个容器连接到在 docker 容器中运行的 mysql 服务器

[英]connect to mysql server running in docker container from another container

我有两个容器 node.js 服务器和 mysql 服务器,这两个容器都运行良好,我正在尝试从我的节点应用程序连接到在容器上运行的数据库。 我创建了一个桥接网络

$ docker network create -d bridge mynetwork

并在这个网络中运行我的两个容器

$ docker run -p 32031:3306 --network mynetwork  --name mysql  -e MYSQL_ROOT_PASSWORD=abc123 -d mysql:5.7

$ docker run -p 3000:3000 --network mynetwork  node-server node index.js

我试图连接我通过 docker inspect mysql找到的 mysql 容器的 IP,它是 172.18.0.2 和端口 32031

哪里出错了,没有连接。

如果您通过从docker inspect command获得的 IP 进行连接。 这意味着您现在的连接是172.18.0.2并且端口仍然是3306

从 nodejs 连接的另一种方式(同一网络中的 nodejs 和 mysql)。 连接信息为:

hostname: mysql // container name
port: 3306

通过网络连接的 Docker 容器可以在内部进行通信。 您的 mysql 容器在内部运行在端口330632031外部运行在32031端口上。

尝试通过端口3306连接。 它应该工作。

哦,祝我好运。 它现在工作了,我再次构建 docker 镜像,并将数据库连接到我通过检查 mysql 容器找到的 IP 和端口 32031。运行 docker 容器与$ docker run -p 3000:3000 --network mynetwork node-server node index.js

var pool = mysql.createPool({
  connectionLimit : 3,
  host            : '172.18.0.1',
  user            : 'root',
  port            :  32031,
  password        : 'abc123',
  database        : 'mydatabase',
  charset         : 'utf8mb4',
  timezone        : 'PKT',
  timeout         : 4000
});

:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM