Docker 如何安装、启动、配置 MongoDB?

文章目录

  • 安装mongodb
  • 初始化配置
  • GUI工具连接数据库(Robo 3T)
  • 备份与恢复
  • Nodejs中的Mongoose库

前提: 已安装docker和docker-compose

安装mongodb

# 此处我将mongodb安装在/home/mongotest下
cd /home/
mkdir mongotest
cd mongotest/

# 创建docker-compose.yml文件
vi docker-compose.yml
# 进入编辑状态
i
# 粘贴以下内容
version: '3.1'
services:
  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root   # 这里设置管理员账户为root
      MONGO_INITDB_ROOT_PASSWORD: example  # 密码example
    ports:
      - 27017:27017
    # mongo数据持久化
    volumes:
      - /home/mongotest:/data/db
# 退出编辑状态
esc 
# 保存
:wq

# 运行
docker-compose up -d

# 防火墙放行端口27017
# 查看firewalld状态,若为dead状态,则需要开启防火墙systemctl start firewalld
systemctl status firewalld
# 让防火墙永久放行27017端口
firewall-cmd --add-port=27017/tcp --permanent
# 重启防火墙
firewall-cmd --reload

初始化配置

cd mongotest/

# 连接数据库
# 注意:mongo5.0以下的版本使用mongo来替换mongosh,即docker exec -it mongotest_mongo_1 mongo
docker exec -it mongotest_mongo_1 mongosh

# 切换到管理员用户
use admin
db.auth('root','example') # 管理员授权登录
 
# 创建一个数据库testdb
use testdb

# 创建一个用户,用户名为test,密码123456。
db.createUser({user:'test',pwd:'123456',roles:[{role:'dbOwner',db:'testdb'}]})

# 测试下上面添加的用户是否可以登录数据库testdb
use testdb
db.auth('test','123456')

# 测试插入数据
db.users.insertOne({'name':'sue',age:30,email:'[email protected]'})
show collections
db.users.find({})
db.users.insertOne({name:'soft',age:20})
db.users.find({})

# 测试更新
db.users.updateOne({name:'sue'},{$set:{email:'[email protected]'}})
db.users.find({})

# 测试删除
db.users.deleteOne({'name':'sue'})
db.users.find({})

GUI工具连接数据库(Robo 3T)

:连接之前,确保云服务器 端口27017已放行,详见《云服务设置端口放行》
Docker 如何安装、启动、配置 MongoDB?_第1张图片

Docker 如何安装、启动、配置 MongoDB?_第2张图片

Docker 如何安装、启动、配置 MongoDB?_第3张图片

备份与恢复

备份方式:docker cp + mongodump
恢复方式:docker cp + mongorestore

# mongotest_mongo_1 容器
# mongodump 指令
# -h 连接的mongodb的host
# -u 用户
# -p 密码
# -d 指定备份哪个数据库,不接的话代表备份所有数据库
# -o 指定备份到哪个目录

# 1.备份
docker exec -it mongotest_mongo_1 mongodump -h localhost -u root -p example -o /tmp/test
cd /tmp/
docker cp e401dcb60416:/tmp/test /tmp/test

# 2.恢复
docker exec -it mongotest_mongo_1 mongorestore -h localhost -u root -p example --dir /tmp/test

Nodejs中的Mongoose库

  • 比较
分类 Oralce/Mysql MongoDB Mongoose
1 数据库实例 MongoDB实例 Mongoose
2 模式(schema) 数据库(database) mongoose
3 表(table) 集合(collection) 模板(Schema) 模型(Model)
4 行(row) 文档(document) 实例(instance)
5 Prinary key Object(_id) Object(_id)
6 表字段Column Field Field
  • 使用
    库:https://mongoosejs.com/
mkdir mongoose-demo
cd mongoose-demo
npm init -y
npm install -s mongoose
// app.js
const mongoose = require('mongoose')
mongoose.connect('mongodb://test:[email protected]:27017/testdb',{useNewUrlParser: true})

// 连接数据库的Connection
const User = mongoose.model('users', {name: String, age: Number, email: String})

const imooc = new User({
  name: 'imooc-test',
  age:30,
  email: '[email protected]'
})
imooc.save().then(() => {console.log('save OK!')})

node app.js

你可能感兴趣的:(docker,mongodb,容器)