使用 docker compose 连接 mongo docker 容器时如何指定数据库名称?

问题描述 投票:0回答:1

我正在开发一个项目,我使用 Mongo docker 容器在本地存储我的项目数据。我的 Express 服务器中有一个 docker compose 文件,其中包含以下几行:

version: '3'
services:
  mongodb:
    image: mongo
    container_name: mongodb
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: password
volumes:
  mongodb_data:

运行 docker-compose up 我成功启动了 mongo 容器。我的 connectDB 文件是这样的:

const mongoose = require('mongoose')

const connectDB = async () => {
    try {
        await mongoose.connect(process.env.MONGO_URI_LOCAL);
        console.log(`MongoDB connected`);
    } catch (error) {
        console.log("database connection error : ", error);
    }
}

module.exports = connectDB;

MONGO_URI_LOCAL=mongodb://admin:密码@localhost:27017

如果我这样做,那么每当我做任何与数据库相关的事情时,我的所有数据都会存储在我不想要的数据库名称“test”中,相反,我希望数据存储在特定的数据库名称“Besocial”中”.

到目前为止我已经尝试过以下方法:

  1. 根据chatgpt的建议按以下方式修改了docker-compose文件,但没有成功,数据仍然仅存储在test数据库中。
version: '3'
services:
  mongodb:
    image: mongo
    container_name: mongodb
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: password
      MONGO_INITDB_DATABASE: BeSocial
      MONGO_INITDB_CONNECTION_URL: mongodb://admin:password@localhost:27017/BeSocial
volumes:
  mongodb_data:
  1. 我尝试将 Mongo uri 修改为 mongodb://admin:password@localhost:27017/Besocial 但这也没有什么区别,与此相反,我什至无法通过这种方式连接到我的 mongo 容器。

我期待有人告诉我如何指定数据库名称?如果需要,我愿意分享更多信息。 预先感谢。

mongodb docker mongoose docker-compose
1个回答
0
投票

尝试将

?authSource=admin
添加到连接网址的末尾。

© www.soinside.com 2019 - 2024. All rights reserved.