使用 DockerCompose 部署单机版 Mongodb
Mongodb 是最像关系型数据库的 NoSql 数据库,其数据类型非常丰富,数据结构松散,采用类似 Json 的 Bson 二进制格式存储数据,还支持对索引功能。主要应用在数据量大、读多写少或者读写都比较频繁、数据价值较低的场景中,如果社交平台的点赞和评论、游戏、物流信息和轨迹存储等。
由于在企业中,无论是开发环境还是生产环境,基本上都采用容器化技术部署中间件,因此这里也只是介绍使用 DockerCompose 部署 Mongodb,毕竟采用容器化部署中间件非常方便快速,不存在环境兼容性,省去了很多不必要的麻烦,开发人员也很容易掌握。
我的 CentOS7 的虚拟机地址为:192.168.136.128 ,已经安装过了 Docker 和 DockerCompose,在此虚拟机上演示。
Mongodb 的中文官网地址:https://www.mongodb.com/zh-cn
使用 DockerCompose 部署
首先创建 /root/mongo/data 目录,在 /root/mongo 目录下创建 docker-compose.yml 文件:
# 创建宿主机用于存放数据的目录
mkdir -p /root/mongo/data
# 对于 dockercompose 来说,其默认的配置文件名称为 docker-compose.yml
# 因此在创建一个 docker-compose.yml 配置文件
vim /root/mongo/docker-compose.yml
然后编写 docker-compose.yml 文件,内容如下:
version: '3.5'
services:
# 服务名称为 mongodb,该名称主要用于容器之间服务的 dns 解析
mongodb:
# 容器的名称为 mymongo
container_name: mymongo
# 使用的镜像名称
image: mongo:latest
# 当 docker 服务启动后,自动启动 mongodb 容器
restart: always
# 对外映射的端口
ports:
- "27017:27017"
environment:
# 初始化一个 root 角色的用户 root 密码是 root
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=root
# 宿主机硬盘目录映射容器内的存放数据的目录
volumes:
- /root/mongo/data:/data/db
# 增加启动参数,--auth,表示连接 mongodb 需要用户名和密码
command:
- "--auth"
然后进入到 docker-compose.yml 文件所在的目录,指定 up 命令即可
# 进入 docker-compose.yml 文件所在的目录
cd /root/mongo/
# 通过 docker-compose 启动 mongodb 容器
docker-compose up -d
OK,经过以上过程,docker 部署 mongodb 就完成了,下面我们可以检验以下成果。
目前高版本的 Navicat 已经支持连接 Mongodb ,我使用的 Navicat 的版本是 16,如下图新建 mongodb 的连接。
我的虚拟机 ip 是 192.168.136.128,连接 admin 库,端口是 27017,用户名和密码都输入 root ,然后点击测试连接。
测试连接没问题后,点击确定即可,打开如下界面,发现 mongodb 下没有任何数据库,这很正常。
我们可以新建一个 mongodb 的数据库,比如 mytest 数据库。
创建后的 mytest 数据库如下图所示:
以上就是本篇博客有关使用 docker-compose 部署 mongodb 的介绍,总体非常简单。
启动 mongodb 时,如果不加 --auth 参数,连接 mongodb 是不需要用户名和密码的,不建议这样做。
无论开发环境,还是生产环境,建议都增加 --auth 参数,我们可以使用 MONGO_INITDB_ROOT_USERNAME 和 MONGO_INITDB_ROOT_PASSWORD 创建一个 root 角色的账号。
有关 mongodb 的操作命令,这里就不再介绍了,后续会介绍 Java 程序如何通过 SpringData 操作 mongodb 进行增删改查。