Node.js 从另一个容器连接到docker容器中运行的mysql服务器
我有两个container node.js服务器和mysql服务器 两个容器都运行良好,iam正在尝试从我的节点应用程序连接到容器上运行的数据库。 我创建了一个桥接网络Node.js 从另一个容器连接到docker容器中运行的mysql服务器,node.js,docker,docker-compose,Node.js,Docker,Docker Compose,我有两个container node.js服务器和mysql服务器 两个容器都运行良好,iam正在尝试从我的节点应用程序连接到容器上运行的数据库。 我创建了一个桥接网络 $ 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 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
哪里出了问题,没有连接。如果您通过IP连接,您可以从
docker inspect命令中获得该IP。这意味着您现在的连接是172.18.0.2
,端口仍然是3306
从nodejs连接的另一种方式(同一网络中的nodejs和mysql)。连接信息是:
hostname: mysql // container name
port: 3306
通过网络连接的Docker容器可以在内部通信。您的mysql容器在内部端口3306
和外部端口32031
上运行
尝试通过端口连接3306
。它应该有用。哦,祝我好运。
现在可以工作了,我再次构建docker映像,并将数据库和我通过inspect 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
});
:)当两个容器都打开时,你能写出docker统计的结果吗?您是否在dockerfile中公开32031端口?只要重新创建容器,该IP地址就会更改;我建议永远不要查找或使用容器内部IP地址。主机名方法更可靠。没错,按容器名命名主机名是正确的方法。还有docker是如何使用的