使用脚本安装MongoDB ,初始化时配置用户名密码,及数据库等信息
启动文件 docker-compose.yml
version: '3.1'
services:
mongo:
image: mongo:3.6.18
container_name: mongo_server
env_file:
- ${NODE_ENV}.env
ports:
- 27017:27017
volumes:
- ./init-mongo.sh:/docker-entrypoint-initdb.d/init-mongo.sh
- ./data/db:/data/db
ports 前面是对外端口,例:- 2000:27017 ,则暴露给外部的端口为2000
执行脚本文件 init-mongo.sh
mongo -- "$MONGO_INITDB_DATABASE" <<EOF
var rootUser = '$MONGO_INITDB_ROOT_USERNAME';
var rootPassword = '$MONGO_INITDB_ROOT_PASSWORD';
var admin = db.getSiblingDB('admin');
admin.auth(rootUser, rootPassword);
var user = '$MONGO_INITDB_USERNAME';
var passwd = '$MONGO_INITDB_PASSWORD';
db.createUser({user: user, pwd: passwd, roles: ["readWrite"]});
EOF
配置文件 .env (为用户名密码及数据库)
# define env var default value.
MONGO_INITDB_ROOT_USERNAME=root
MONGO_INITDB_ROOT_PASSWORD=root
MONGO_INITDB_DATABASE=DATABASE
MONGO_INITDB_USERNAME=admin
MONGO_INITDB_PASSWORD=admin
启动方式 docker-compose up -d
注:只有第一次启动时,参数会被写入数据库,通过docker-compose停止再次启动,脚本及配置文件修改无效,需要删除数据库重新执行才可以。
如果继续添加数据库,用户名和密码需要重新设置,Navicat设置用户权限前需要先建立一个表。
网友评论