![](/img/trans.png)
[英]Able to connect to MongoDB running in a Docker container locally, but not from another container
[英]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 容器在内部运行在端口3306
, 32031
外部运行在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.