侧边栏壁纸
  • 累计撰写 81 篇文章
  • 累计创建 50 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

安装mongo

shawn
2023-09-02 / 0 评论 / 0 点赞 / 2 阅读 / 5045 字

如何在docker中部署mongo

mongo配置

# 拉库
docker pull mongo
# run
docker run -itd --name mongo -p 27017:27017 mongo --auth
# 进入mongo
docker exec -it mongo mongosh admin
# 创建一个用户
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 连接测试
db.auth('admin', '123456')

python远程连接mongo

# 引入库
from pymongo.mongo_client import MongoClient
# url组合
uri = "mongodb://admin:123456@127.0.0.1/?admin?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh"
client = MongoClient(uri)
# 连接测试, 返回successfully表示连接成功;
try:
    client.admin.command('ping')
    print("Pinged your deployment. You successfully connected to MongoDB!")
except Exception as e:
    print(e)

简单的操作

docker exec -it mongo mongosh admin
# 查看用户
show user

# 查看数据库
show dbs

# 当前数据库
db

# 查看所有集合
show collections

创建mongo单副本集

Mongo单副本集创建方法

docker拉库

docker pull mongo

然后构建一个docker-compose的yaml

# 先cd到/path/to/host
openssl rand -base64 128 > keyFile
chmod 400 keyFile
chown 999 keyFile

# 其中volumes中映射一个keyFile跟一个db文件夹
version: '3'
services:
  mongo:
    network_mode: bridge
    container_name: mongo
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: adminadminadmin
    ports:
      - 27017:27017
    command: mongod --replSet rs0 --bind_ip_all --auth --keyFile /etc/mongo/keyFile --dbpath /data/db
    volumes:
      - /path/to/host/keyFile:/etc/mongo/keyFile
      - /path/to/host/data:/data/db

执行构建

# 构建
docker-compose up -d
# 进入bash
docker exec -it mongo bash
# 进入sh
mongosh
# 切换用户
use admin
# 认证
db.auth('admin', 'adminadminadmin')
# 新建一个conf,替换ip部分。
conf = {_id : "rs0",members: [{ _id: 0, host: "<ip>:27017" },]}
# 构建
rs.initiate(conf)
# 查看状态
rs.status()

# 连接uri
uri = "mongodb://admin:adminadminadmin@<ip>:27017/?replicaSet=rs0"

mongo操作

新建用户

进入admin数据库

use amdin

创建用户

db.createUser({user:"xxx",pwd:"xxx",roles:["dbAdmin","readWrite"]})

删除用户

db.dropUser('xxx')

以xx用户登录

mongo -u root -p xxx

副本集方式1

参数

docker run --rm --network test-net  --name mongo1 -d -v /data/mongo1/db:/data/db -p 27021:27017 mongo:latest --replSet replSet1
docker run --rm --network test-net  --name mongo2 -d -v /data/mongo1/db:/data/db -p 27022:27017 mongo:latest --replSet replSet1

启用副本集

rs.initiate()

副本集添加新成员

rs.add('10.10.10.10:27018')

可以通过以下命令检查

rs.status()

副本集方式2

创建多个副本集

创建第1个

docker run -p 30001:27017 --name mongo1 mongo mongod --replSet my-mongo-set

创建第2个

docker run -p 30002:27017 --name mongo1 mongo mongod --replSet my-mongo-set

进入到其中一个

docker exec -it mongo1 mongo

配置文件

config = {"_id" : "my-mongo-set","members" : [{"_id" : 0,"host" : "10.10.10.10:27018"},{"_id" : 1,"host" : "10.10.10.203:27019"}]}

运行配置文件

rs.initiate(config)

可以通过以下命令检查

db.isMaster()
rs.status()
0

评论区