gpt4 book ai didi

mysql - TCPConnectWrap.afterConnect - Node 在 docker compose 中时无法从 mysql 获取数据

转载 作者:行者123 更新时间:2023-11-29 09:42:24 25 4
gpt4 key购买 nike

我正在尝试通过 dokcer-compose 将 Node 与 mysql 连接。我可以使用工作台访问 mysql,但是当我尝试连接 Node 时出现错误:

Error: connect ECONNREFUSED 127.0.0.1:3306
     at TCPConnectWrap.afterConnect [as oncomplete] (net.js: 1054: 14))

有谁知道这是怎么回事吗?

docker-compose.yml

version: '3'

services:

#App Service
app:
image: "node:alpine"
container_name: cms-node
restart: unless-stopped
tty: true
working_dir: /app
environment:
- NODE_ENV=production
ports:
- 1234:1234
volumes:
- ./:/app
links:
- db
depends_on:
- db

#Mysql Service
db:
image: mysql:latest
container_name: cms-mysql
restart: unless-stopped
# command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: CMS
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306

Node 创建连接

const db: Connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'CMS',
});

export default db;

Node 尝试连接

db.connect((err) => {
if (err) {
throw err;
}
console.log('Connected!');
});

最佳答案

您应该使用链接名称(默认情况下,链接服务的名称)作为要连接的主机名。请参阅docker-compose.yml有关详细信息的文档。

因此只需使用 host: 'db' 而不是 host: 'localhost'

关于mysql - TCPConnectWrap.afterConnect - Node 在 docker compose 中时无法从 mysql 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56330860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com