docker + mongodb 双剑合壁

6 篇文章 0 订阅
5 篇文章 0 订阅

本次使用的环境 centos 7, mongodb 3.4 的环境
也可以使用本地环境,没有多大影响。

使用docker的原因: 安装mongodb太麻烦了, 要下载包,然后又要配置各类文件, 要重启,关键经常出来问题。最TMD的操蛋就是的 我的mongodb 数据库 最近老是被攻击,删除我的数据,害得每次都要重新操作,近尔引起一系列的问题。

1. 安装docker 与 docker-compose 的环境。

2. 编写文件docker-compose.yml (文件位置:随便创建名为mongodb一个文件,里面放上 .yml 的文件, 切记不要放桌面)

  • 本次创建的账号密码:root/123456
  • ./data/mongo 这是当前mongodb文件里文件,无需手动创建, ./data/mongo-entrypoint/ 同理
  • /data/db 这个为docker 里面的文件,它们俩个关系是映射的关系。
version: '2'
services:
  mongo-container:
    image: mongo:3.4
    container_name: mongodb
    environment:
        - MONGO_INITDB_ROOT_USERNAME=root
        - MONGO_INITDB_ROOT_PASSWORD=123456
    ports:
      - "27017:27017"
    volumes:
      - "./data/mongo:/data/db"
      - "./data/mongo-entrypoint/:/docker-entrypoint-initdb.d/"
    command: mongod

3. 开启docker

systemctl start docker // 当前为centos 环境下启动方式, 如果本地则为自行查阅资料启动。

4. 下载image并执行mongodb程序, 执行docker-compose up -d 位置在 上面创建mongodb 的位置。

在这里插入图片描述

4. 查看docker 运行情况

docker ps

在这里插入图片描述
好了。mongodb 已经安装完成了。

下面 mongodb 的客户端【mongodb compass】验证 mongodb的是否运行良好?

5. 开启mongodb compass 软件

在这里插入图片描述

登录进入去可以看到
在这里插入图片描述

6. 使用node 写入数据

app.js 其他代码省略, 只显示核心代码

mongoose.set('useFindAndModify', false)
const connectionStr = 'mongodb://root:123456@你的ip或localhost:27017/可以为admin也可以为其他database?authMechanism=SCRAM-SHA-1'
mongoose.connect(connectionStr, { useNewUrlParser: true, useUnifiedTopology: true }, () => console.log('MongoDB 连接成功了!'));
mongoose.connection.on('error', console.error);

执行接口参数调用,查看mongodb compass 的数据变化。我的例子如下:
在这里插入图片描述

ok了,
最后:
这边我们创建了一个admin用户权限, 然后我们需要去重启的docker,然后用身份校验的方式登录。

1. docker-compose down
2. docker-compose up -d
docker 的 mongodb 已经启动ok。
3. 查看docker容器 docker ps
4. docker exec -it [容器id] bash
5. auth 的身份登录  mongo admin -u 'root' -p '123456'

在这里插入图片描述
在这里插入图片描述

  • A 创建给 admin 创建 用户
db.createUser({
	user: 'root',
	pwd: '123456',
	roles: [{role: 'readWrite', db: 'admin'}]
})
  • B 验证用户成功
db.auth('root','123456') // 返回1 则代表ok
  • C 查询用户
show users // 结果返回用户信息

ps: ABC 的三个步骤不能颠倒。

到此我们连接 admin的db 已经完成了,但是我们的业务都不是在admin 上操作了,此时我们创建一个的databae。

在这里插入图片描述
修改node代码

mongoose.set('useFindAndModify', false)
const connectionStr = 'mongodb://username:123456@你的ip或localhost:27017/demo?authMechanism=SCRAM-SHA-1'
mongoose.connect(connectionStr, { useNewUrlParser: true, useUnifiedTopology: true }, () => console.log('MongoDB 连接成功了!'));
mongoose.connection.on('error', console.error);

postman调试接口,连接mongodb compass 客户端,看看能不能查看数据。

在这里插入图片描述

这下真的ok了。。。。。。。。。。。。。。。

补充:查看mongod.conf

# 进入容器
docker exec -it [容器id] bash
#更新源
apt-get update
# 安装 vim
apt-get install vim
# 修改 mongo 配置文件
vim /etc/mongod.conf.orig
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值