【发布时间】:2019-09-26 09:10:58
【问题描述】:
我知道这个问题已经得到了很多回答,但他们似乎都没有帮助我解决这个问题。我想用 docker-compose 创建一个 create-react-app 客户端、express 后端和 mysql 数据库。我已经配置了我的文件,它似乎在给定端口上启动了我的所有容器。我的问题是,当我尝试使用 npm 包 mysql 访问我的数据库时,我收到 ECONNREFUSED 错误。我知道我可以从节点应用程序连接到数据库,因为当我创建一个不在 docker 容器中的单独节点应用程序时它工作正常。
为什么我可以从 Sequel Pro 和另一个非 docker 节点应用程序访问我的 docker 容器 mysql 数据库,但当我使用 docker-compose 运行它们时却不能。
这里是我的 docker-compose 文件的链接。 https://github.com/Jazilch/airbnb-app/blob/master/docker-compose.yml
我删除了用户和密码,因为我知道它们是正确的,因为我可以从使用相同配置的其他节点服务器使用相同的用户名和密码进行连接。
const pool = mysql.createPool({
host: 'localhost',
port: '3306',
user: '',
password: '',
database: 'airbnb_database',
});
pool.query = util.promisify(pool.query);
pool.getConnection((err, connection) => {
if (err) {
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
console.error('Database connection was closed.')
}
if (err.code === 'ER_CON_COUNT_ERROR') {
console.error('Database has too many connections.')
}
if (err.code === 'ECONNREFUSED') {
console.error('Database connection was refused.')
}
if (err) {
console.log(err);
}
}
if (connection) connection.release()
return
})
【问题讨论】:
-
产生错误的代码在哪里?你究竟想如何连接?该部分不在您的 github 存储库中
-
@Mihai 我添加了一些关于如何连接到上面的数据库的额外代码
标签: mysql node.js docker docker-compose