[英]How to link mongo with node using docker compose
我正在尝试将我的节点服务器与我在 Mongo 中的数据库链接,但不起作用......
这是我的 Docker-Compose.yml:
version: '3.9'
services:
human:
build:
context: ./human-app
container_name: human
ports:
- "3001:3001"
mongodb:
image: mongo
container_name: mongodb
env_file:
- ./human-app/srcs/.env
environment:
- MONGO_INITDB_ROOT_USERNAME=Pepe
- MONGO_INITDB_ROOT_PASSWORD=PepePass
- MONGO_INITDB_DATABASE=Pool
ports:
- "27017:27017"
volumes:
- ./volumes_mongo:/data/db
当我运行命令时:
docker-compose up -d
一切正常但分开,我用命令“docker ps -a”检查状态,结果是这样的:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9335c5cd4940 mongo "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:27017->27017/tcp mongodb
2a28635d2caa human-selection-app_human "node server" 4 seconds ago Up 3 seconds 0.0.0.0:3001->3001/tcp human
如果我进入我的 mongo 容器,并按照以下步骤操作,就会发生这种情况:
1- docker exec -it mongodb bash 2- mongo 3- 显示 dbs “结果没有 dbs”
所以,我无法与我的节点服务器链接任何东西,可能我需要为这 2 个服务创建一个网络? 谁能帮我? 谢谢。
另外,这就是我从服务器连接到 MongoDB 的方式:
async _connectDB() {
//! We create the connection to the database
const dbUser = process.env.DBUSER;;
const dbPassword = process.env.DBPASSWORD;
const dbName = process.env.DBNAME;
const dbUriLocal = `mongodb://${dbUser}:${dbPassword}@127.0.0.1:27017/${dbName}`;
mongoose.connect(dbUriLocal, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log(clc.cyan('Debug: Database connected successfully')))
.catch(e => console.log(e));
}
由于您的应用程序也在与 MongoDB 服务在同一网络中的 Docker 容器内运行,这意味着您应该使用 MongoDB 的服务名称作为连接地址,而不是本地主机 IP 地址。 更改您的dbUriLocal
变量以使用 MongoDB 服务名称(在您的情况下,它是以docker-compose.yml
中的服务名称命名的“mongodb”)作为连接地址,而不是“127.0.0.1”:
const dbUriLocal = `mongodb://${dbUser}:${dbPassword}@mongodb:27017/${dbName}`;
有关更多信息,请参阅Docker Compose 文件参考中的“网络”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.