Nestjs无法直接连接到docker容器上的数据库mongodb

6l7fqoea  于 2023-11-17  发布在  Go
关注(0)|答案(1)|浏览(181)

我无法直接连接到我的mongodb数据库
如果数据库URI是这样的,则无法连接

DATABASE_URI=mongodb://root:toor@localhost:27017/library

字符串
我可以连接,如果它是这样的,但它会创建shcema数据库“测试”,我不希望这样,我想模式设置正确的数据库,我选择

DATABASE_URI=mongodb://root:toor@localhost:27017


这里我的配置和我一直试图解决这个问题

  • NestJ在本地机器上运行(3000)
  • Mongo和Mongo Express在Docker上运行(20701/8081)

我使用docker-compose.yml来运行Mongo和MongoExpress

version: '3'
services:
  mongodb:
    image: mongo
    container_name: mongo-library
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=password
      - MONGO_INITDB_DATABASE=library
    ports:
      - '27017:27017'
    volumes:
      - ./data/db:/app/data/db
    networks:
      - app-network 
    restart: always

  mongo-express:
    image: mongo-express
    container_name: mongo-express-library
    environment:
      - ME_CONFIG_MONGODB_SERVER=mongodb
      - ME_CONFIG_MONGODB_ENABLE_ADMIN=true
      - ME_CONFIG_MONGODB_ADMINUSERNAME=root
      - ME_CONFIG_MONGODB_ADMINPASSWORD=password
      - ME_CONFIG_BASICAUTH_USERNAME=root
      - ME_CONFIG_BASICAUTH_PASSWORD=password
      - ME_CONFIG_MONGODB_PORT=27017
    ports:
      - '8081:8081'
    depends_on:
      - mongodb
    networks:
      - app-network  
    restart: always

networks:
  app-network:
    driver: bridge


我试

  • Database_URI=mongodb://root:toor@localhost:27017/library
  • Database_URI=mongodb://root:toor@mongodb:27017/library

日志

[Nest] 1504  - 10/30/2023, 23:09:26   ERROR [MongooseModule] Unable to connect to the database. Retrying (1)...
[Nest] 1504  - 10/30/2023, 23:09:50   ERROR [ExceptionHandler] Authentication failed.


如果我使用

  • Database_URI=mongodb://localhost:27017/library

但由于我想设置用户名和密码使用这种方法将给予错误这个错误

[Nest] 20624  - 10/30/2023, 23:22:28   ERROR [ExceptionsHandler] Command find requires authentication
MongoServerError: Command find requires authentication


我试过搜索,可以来的解决方案总是改变localhost到我的服务名称是不工作.使用数据库_URI=mongodb://root:toor@localhost:27017/库应该肯定为大多数情况下工作,但它不会为我工作不知何故.我尝试更改用户名和密码仍然无法连接.

3okqufwl

3okqufwl1#

根据你的docker-compose,以及你在本地运行Nest服务器的事实,你应该使用像mongodb://root:password@localhost:27017/library这样的连接URI。如果你仍然面临问题,我会尝试直接连接一个mongo shell,同时传递身份验证参数,看看会发生什么。

相关问题