使用Docker安装MongoDB

在本地开发使用MongoDB的应用程序时,使用Docker非常方便。

Docker-compose 可以进行代替

准备用于开发环境的 docker-compose.dev.yaml。

港口

MongoDB的默认端口是27017,但为了从容器外部访问,需要将本地的27018端口进行端口转发。

卷。

./mongo/db:/data/db ./mongo/configdb:/data/configdb はデータの永続化に必要.

./mongo/init:/docker-entrypoint-initdb.d にデータベースの初期化のための .jsファイルを入れておく. 後述.

环境

    • MONGO_INITDB_ROOT_USERNAME: rootユーザの名称

 

    • MONGO_INITDB_ROOT_PASSWORD: rootユーザのパスワード

 

    MONGO_INITDB_DATABASE: コンテナ作成時に初期化されるデータベース
  mongo:
    container_name: mongo
    restart: always
    image: mongo:4.2.0
    ports:
      - "27018:27017"
    volumes:
      - ./mongo/db:/data/db
      - ./mongo/configdb:/data/configdb
      - ./mongo/init:/docker-entrypoint-initdb.d
    environment:
      MONGO_INITDB_ROOT_USERNAME: <root_user_name>
      MONGO_INITDB_ROOT_PASSWORD: <root_password>
      MONGO_INITDB_DATABASE: <database_name>
      TZ: Asia/Tokyo

最初的数据 (chū qī de shù jù)

将 .js 或 .sh 文件放置在 ./mongo/init 目录下,可以将初始数据注入其中。
在下面的文章中,详细描述了每个文件的加载机制。
https://qiita.com/homines22/items/038dc08fca6405813e0b

创建认证用户

在使用docker-compose启动的mongo容器中,创建一个可以从本地访问的用户。该用户被分配了可以访问的数据库(authenticationDatabase)。


var users = [
  {
    user: "<user_name>",
    pwd: "<pass_word>",
    roles: [
      {
        role: "dbOwner",
        db: "<db_name>"
      }
    ]
  }
];

for (var i = 0, length = users.length; i < length; ++i) {
  db.createUser(users[i]);
}

导入Json文件

除了用户数据之外,有时也可能需要将现有的Json数据放入适当的集合中。

mongoimport --db <db_name> --collection <collection_name> --drop --file /docker-entrypoint-initdb.d/<your_json.json> --jsonArray

–drop オプションをつけることで、実行時に対象のcollectionが存在した場合にそれを削除して初期データを投入する.

–jsonArray オプションをつけることで、array形式になっているJsonファイルも読み込める. (insertManyする感じ.)

从容器外部访问

使用创建的用户,可以通过以下命令从本地终端登录进入Mongo。

$ mongo -u <user_name> -p --port 27018 --host 127.0.0.1 --authenticationDatabase <db_name>
广告
将在 10 秒后关闭
bannerAds