node.js - 无法连接到位于 docker 容器内的 mongo db
问题描述
我有一个想要连接到 Mongo 数据库的 Node JS 演示应用程序。我的代码在不支持 Mongo 的服务器上,所以我尝试从 docker 容器中运行它。当我运行该应用程序时,我收到有关与数据库连接的一些错误:
UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [mongo:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND mongo mongo:27017]
带有数据库的容器已启动并正在运行:
[root@xxxxxx docker-node-mongo]# docker run -d -p 27017-27019:27017-27019 --name mongodb mongo:4.0.4^C0.0:27017-27019->27017-27019/tcp mongodb
[root@xxxxxx docker-node-mongo]# [root@vps12219000 docker-node-mongo]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
ccdf49525782 mongo:4.0.4 "docker-entrypoint.s 26 minutes ago Up 26
minutes 0.0.0.0:27017-27019->27017-27019/tcp mongodb
我正在像这样连接到数据库:
const mongoose = require('mongoose');
const DB_URI = 'mongodb://mongo:27017/toDoApp';
mongoose.connect(DB_URI).then(() => {
console.log('Listening on port: ' + PORT);
app.listen(PORT);
});
有人可以告诉我我做错了什么吗?谢谢!
注意:我只想在容器内运行数据库,而不是节点部分。
解决方案
推荐阅读
- java - 按下按钮后应用程序崩溃 - 蓝牙 arduino
- sql - PostgreSQL 中的 INSERT 与 ON CONFLICT 可以在 SQL 中是有条件的吗
- dictionary - HIVE:如何访问 MAP 对象中的元素
- c++ - 为什么我的 .exe 文件可以在另一个处理器上运行
- angular - 当我在功能模块中将服务指定为提供者时,为什么在 Angular 中没有提供服务提供者
- java - Java 8 使用 throws 函数而不是 try catch
- r - 将 mutate_at 与 mutate_if 一起使用
- linux - Yocto 安装脚本和内核模块
- c++ - 使用 libcurl 函数传输 Sqlite DB 文件但无法立即打开 db 文件以将数据发送到数据库
- java - 尝试删除 Cosmos DB Java SDK 中不存在的文档时不要抛出 DocumentClientException