繁体   English   中英

如何使用 docker compose 将 mongo 与节点链接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM