使用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>