使用docker部署MongoDB数据库

最近由于工作需要搭建MongoDB数据库:将解析的车端采集的数据写入到数据库,由于MongoDB高可用、海量扩展、灵活数据的模型,因此选用MongoDB数据库;由于现公司只有服务器,因此考虑容器化部署MongoDB数据,特此记录一下~

一、镜像拉取

使用如下命令拉取最新MongoDB镜像

bash 复制代码
docker pull mongo

二、创建MongoDB容器

2.1 创建宿主机目录

执行如下代码:

bash 复制代码
mkdir -p /home/bigdata/mongodb_bigdata/data
mkdir -p /home/bigdata/mongodb_bigdata/conf
mkdir -p /home/bigdata/mongodb_bigdata/logs

创建这几个目录的原因是:

将docker容器挂载的宿主机目录与容器内部的的路径进行映射,相当于对容器的数据做了一个backup。容器销毁时,可以通过宿主机目录对容器的数据进行恢复。

2.2 创建docker容器

执行如下命令:

bash 复制代码
docker run -dit --name mongodb -p 27019:27017 \
-v /home/bigdata/mongodb_bigdata/data:/data/db \
-v /home/bigdata/mongodb_bigdata/conf:/data/configdb \
-v /home/bigdata/mongodb_bigdata/logs:/data/log/ \
--restart always -d mongo

2.3 启动容器

执行如下命令

bash 复制代码
docker exec -ti mongodb /bin/bash

执行上述命令后就进入到容器内部

2.4 创建账号

进入到容器内部后,使用命令mongosh进入到命令行执行页面:

进入到admin

c

创建超级管理员账号

bash 复制代码
db.createUser({user:"root",pwd:"123456",roles:[{role:'root',db:'admin'}]}) 

创建bigdata_db库并创建用户

bash 复制代码
# 创建库
use bigdata_db;

# 创建读写帐号
db.createUser(
     {
       user: "bigdata_rw",
       pwd: "11111111",
       roles: [
          { role: "readWrite", db: "bigdata_db" }    
       ]
     }
 )

三、案例

3.1 python链接mongodb库

python 复制代码
# ------------------------------ mongodb连接信息配置 -------------------------------
# 读写
username = 'bigdata_rw'
password = '2222'
ip = 'xx.xxx.xx.xx'
port = 27019
database = 'bigdata_db'
mongodb_info = f"mongodb://{username}:{password}@{ip}:{port}/{database}"

# ---------------------------------------------------------------------------------

connection = pymongo.MongoClient(mongodb_info)

# 链接
db_name = connection['bigdata_db']
collection_name = db_name[mongodb_table_name]

# 查询结果
result_data = collection_name.find()

for i in result_data:
    print('the i is :', i)

3.2、其他

1、新创建的容器没办法使用vim及ll等命令,可进行如下操作:

bash 复制代码
apt-get update
apt-get install vim

中途遇到y/n直接enter就行。

如果还有其他的系统命令,可以执行apt-get install进行安装。

2、 ll的配置

bash 复制代码
vim ~/.bashrc

# 进入到编辑页面,添加如下内容:
alias ll='ls -l'

# 使命令生效
source ~/.bashrc
相关推荐
heartbeat..5 分钟前
Redis 常用命令全解析:基础、进阶与场景化实战
java·数据库·redis·缓存
数据知道11 分钟前
PostgreSQL 实战:一文掌握如何优雅的进行递归查询?
大数据·数据库·postgresql
Hello.Reader15 分钟前
Flink 2.2 Docker 部署Session / Application / SQL Client 一把梭(含 Compose、插件、连接器与踩坑点)
sql·docker·flink
陌上丨16 分钟前
MySQL8.0高可用集群架构实战
数据库·mysql·架构
重生之绝世牛码27 分钟前
Linux软件安装 —— ClickHouse单节点安装(rpm安装、tar安装两种安装方式)
大数据·linux·运维·数据库·clickhouse·软件安装·clickhouse单节点
一只自律的鸡40 分钟前
【MySQL】第十一章 存储过程和存储函数
数据库·mysql
翔云1234561 小时前
MySQL 中的 utf8 vs utf8mb4 区别
数据库·mysql
数据知道1 小时前
PostgreSQL 实战:索引的设计原则详解
数据库·postgresql
老毛肚1 小时前
Spring 6.0基于JDB手写定制自己的ROM框架
java·数据库·spring
CodeBlossom1 小时前
MySQL进阶 索引
数据库·mysql