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
    评论
使用Docker安装MongoDB可以按照以下步骤进行操作: 1. 创建一个目录用于存放MongoDB的数据文件,比如/data目录。这个目录会被映射到Docker容器中的/data/db目录,以便保留数据库文件。 2. 生成启动文件start.sh。如果不需要账户密码认证,使用以下命令: ```bash cat <<EOF > start.sh #!/bin/bash MONGODB_DIR=`pwd` docker stop mongodb docker rm mongodb docker run -d \ --name mongodb \ --restart always \ --privileged \ -p 27017:27017 \ -v \${MONGODB_DIR}/data:/data/db \ mongo:4.2.2 EOF ``` 如果需要账户密码认证,可以使用以下命令: ```bash cat <<EOF > start.sh #!/bin/bash MONGODB_DIR=`pwd` docker stop mongodb docker rm mongodb docker run -d \ --name mongodb \ --restart always \ --privileged \ -p 27017:27017 \ -v \${MONGODB_DIR}/data:/data/db \ -e MONGO_INITDB_ROOT_USERNAME=admin \ -e MONGO_INITDB_ROOT_PASSWORD=admin123 \ mongo:4.2.2 mongod --auth EOF ``` 3. 停止和删除之前的MongoDB容器,可以使用以下命令: ```bash docker stop mongodb && docker rm mongodb ``` 4. 使用Navicat等工具连接MongoDB数据库进行管理。 总结起来,安装DockerMongoDB可以分为以下几个步骤: 1. 创建一个用于存放数据库文件的目录。 2. 生成启动文件start.sh,根据是否需要认证选择不同的命令。 3. 停止和删除之前的MongoDB容器。 4. 使用Navicat等工具连接MongoDB数据库进行管理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Docker安装MongoDB](https://blog.csdn.net/qq_38983728/article/details/87898956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值