1. 使用 docker-compose.yml 部署 mongo
docker-compose.yml
文件内容如下:
version: '3.1'
services:
mongo:
image: mongo:6
container_name: mongo_server
restart: always
ports:
- "27017:27017"
volumes:
- ./db:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: username
MONGO_INITDB_ROOT_PASSWORD: password
注:这里指定的用户名和密码,是管理账户,而不是数据库的账户。如果需要创建数据库账户,需要在 /docker-entrypoint-initdb.d/
目录中的初始化脚本中自己创建。
- 数据文件存放位置:/data/db (参考 https://hub.docker.com/_/mongo )
- 默认端口:27017
2. 初始化数据库
mongodb 官方 Docker 镜像会在初次启动时执行 /docker-entrypoint-initdb.d/
目录中的脚本文件,执行书序按照文件名的字母序。
初始化 mongo 数据的脚本 init.js
如下:
db.createUser(
{
user: "username",
pwd: "password",
roles: [ { role: "readWrite", db: "database_name" } ]
}
);
除了在 init.js
脚本中增加创建账户的命令,还需要在 docker-compose.yml
中增加环境变量 MONGO_INITDB_DATABASE: foundry_connector
,用来指定执行 init.js
脚本是使用的数据库。
完整的 docker-compose.yml
配置如下:
version: '3.1'
services:
infra_mongo:
image: mongo:6
container_name: infra_mongo
restart: always
ports:
- "27017:27017"
volumes:
- ./db:/data/db
- ./init.js:/docker-entrypoint-initdb.d/1.js:ro
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: pass
MONGO_INITDB_DATABASE: database_name
3. 使用如下命令验证部署情况
$ docker-compose exec -it infra_mongo mongosh
db.runCommand(
{
hello: 1
}
)