基于 Docker 中的 MongoDB 授权使用

阅读本文大约需要 7 分钟

概述

  • MongoDB 的授权访问
  • MongoDB 数据集映射到 host 主机
  • 第三方授权认证 MongoDB 镜像

MongoDB 的授权访问

直接上 yml 代码:

version: '2'
services:
  mongo-container:
    image: mongo:3.4
    environment:
        # 在这里输入 MongoDB 的 root 用户与密码,如果使用了此项,则不需要 --auth 参数
        - MONGO_INITDB_ROOT_USERNAME=root
        - MONGO_INITDB_ROOT_PASSWORD=rootPass
    ports:
      - "37017:27017"
    volumes:
        # 如果想为特定的数据库创建相应的用户,可以将以下文件映射到容器中,其中创建用户的脚本文件会在下一段代码中
      - "$PWD/mongo-entrypoint/:/docker-entrypoint-initdb.d/"
    command: mongod
复制代码

environment 选项分别表示:(需要说明的是:这是官方支持的)

  1. admin 数据库用户名
  2. admin 数据库密码

下面是创建指定数据库的用户的脚本文件:

#!/usr/bin/env bash
echo "Creating mongo users..."
mongo admin --host localhost -u root -p rootPass --eval "db.createUser({user: 'admin', pwd: 'zonePassWord', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]});"
mongo admin -u root -p rootPass << EOF
use zonedb
db.createUser({user: 'zone', pwd: 'zonePass', roles:[{role:'readWrite',db:'zonedb'}]})
EOF
echo "Mongo users created."
复制代码

那么在这里解释一下创建的过程:

  1. 创建一个 admin 数据库,其参数为:

    • 用户:admin

    • 密码:zonePassWord

    • role:userAdminAnyDatabase

  2. 创建一个 zonedb 数据库,其参数为:

    • 用户:zone

    • 密码:zonePass

    • role:readWrite

MongoDB 数据集保存至 host 主机

在介绍这个前,得说一下 -v 和 volume,以下这段文字是引用自 Build Node.Js web server in Docker containers: nodejs+pm2+mongodb+redis这篇文章。

Data volumes 有如下特性:

当容器被创建时 volumes 会被初始化 Data volumes 可以在容器间共享复用 对 data volume 的修改直接生效 更新镜像时,原来 data volume 的修改不会被影响 即使容器被删除, 对应的 data volumes 依然会存在 使用 Volume 可以将容器与容器产生的数据分离,容器产生的数据可以持久化。

Docker volumes 使用 -v 指定和 在 Dockerfile 指定 VOLUME 的区别:

-v /data/logs:/data/logs

将宿主机的 /data/logs 目录挂载到容器的 /data/logs 目录(如果目录不存在会被创建), 宿主机和容器共享该目录,二者对该目录下的修改相互受影响。

Dockerfile 指定 VOLUME /data/logs

在宿主机创建一个目录(默认是 /var/lib/docker/volumes/)并挂载到容器的 /data/logs 目录(如果目录不存在会被创建), 宿主机和容 器共享该目录,二者对该目录下的修改相互受影响。

-v /data/logs

同上, 在宿主机创建一个目录(默认是 /var/lib/docker/volumes/)并挂载到容器的 /data/logs 目录(如果目录不存在会被创建), 宿主机和容器共享该目录,二者对该目录下的修改相互受影响。 Docker volumes 默认是 read-write 模式,也可以设置为 read-only 模式。

第三方授权认证 MongoDB 镜像

这是一个外国开发者 build 的镜像,已经集成了认证过程。我个人认为数据库这么重要的东西,还是用官方的比较好,但第三方的东西也不妨碍我们学习。那我这边就稍微介绍一下,使用起来还是挺方便的。 作者原地址

services:
  db:
    image: aashreys/mongo-auth:latest
    environment:
      - AUTH=yes
      - MONGODB_ADMIN_USER=admin
      - MONGODB_ADMIN_PASS=admin123
      - MONGODB_APPLICATION_DATABASE=sample
      - MONGODB_APPLICATION_USER=aashrey
      - MONGODB_APPLICATION_PASS=admin123
    ports:
      - "27017:27017"
     // more configuration
复制代码

environment 选项分别表示:

  1. 开启认证
  2. admin 数据库用户名
  3. admin 数据库密码
  4. 你使用的工作数据库名称
  5. 工作数据库用户名
  6. 工作数据库密码

至于其他选项就没什么好解释的了。

参考文档如下: How to enable authentication on MongoDB through Docker? Build Node.Js web server in Docker containers: nodejs+pm2+mongodb+redis


关注微信公众号,回复【docker资源】,获取 docker 初级视频教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于Spring Boot的物业管理系统的设计主要分为前端和后端两部分。 前端部分使用HTML、CSS和JavaScript等技术来实现用户界面,用户可以通过浏览器访问物业管理系统,完成各种操作。前端界面可以设计成响应式布局,适配不同设备的屏幕大小。 后端部分使用Spring Boot框架来实现系统的业务逻辑和数据处理。可以使用Spring MVC来处理用户请求,并通过Spring Data JPA来操作数据库。物业管理系统需要设计和实现多个模块,如小区管理、住户管理、公共设施管理、维修管理等。每个模块都可以设计成一个单独的业务模块,通过不同的RestController来处理不同模块的请求。 在物业管理系统,需要使用数据库来存储大量的数据,如小区信息、住户信息、维修记录等。可以选择关系型数据库如MySQL或者非关系型数据库如MongoDB来存储数据。通过Spring Data JPA可以方便地与数据库进行交互。 物业管理系统还需要实现用户权限管理,不同角色的用户拥有不同的权限。可以使用Spring Security来进行用户认证和授权,限制用户的访问权限。 另外,为了方便系统的部署和扩展,可以使用Docker容器来打包和运行系统,通过Kubernetes来管理多个容器的部署和运行。 总之,基于Spring Boot的物业管理系统的设计需要将前端和后端分开实现,并且结合数据库来存储数据,通过Spring Boot框架来实现系统的业务逻辑和数据处理,同时使用Spring Security进行用户权限管理,最终使用Docker和Kubernetes来实现系统的部署和扩展。这样设计的物业管理系统将具有较好的可维护性和扩展性。 ### 回答2: 基于Spring Boot的物业管理系统的设计主要包括以下几个方面:前端界面设计、后端数据库设计、系统功能设计和安全性设计。 首先,前端界面设计是物业管理系统的重要组成部分。可以使用前端框架如React、Angular或Vue来构建用户友好的界面,包括登录页面、主页、物业信息管理、用户管理等功能模块。通过合理的界面设计和交互方式,提高系统的易用性和用户体验。 其次,后端数据库设计是系统的核心部分。可以使用关系型数据库如MySQL或PostgreSQL,设计数据库表来存储物业信息、用户信息、业主投诉等数据。合理规划数据库结构,并建立表之间的关联关系,提高数据库的查询和存储效率。 系统功能设计是物业管理系统不可或缺的一部分。可以包括物业信息管理、业主管理、费用管理、维修管理等功能模块。通过使用Spring Boot提供的开发框架,结合各种持久化层框架如MyBatis或Hibernate,实现功能模块的开发和集成,提升系统的稳定性和性能。 最后,安全性设计是确保系统数据安全和用户隐私的重要方面。可以使用Spring Security来实现用户认证和授权机制,确保只有合法用户才能访问系统,并根据用户角色进行权限控制。同时,可以对敏感数据进行加密保存,确保数据的机密性。 综上所述,基于Spring Boot的物业管理系统的设计需要考虑前端界面设计、后端数据库设计、系统功能设计和安全性设计等方面。通过合理的规划和开发,可以建立一个高效、安全、易用的物业管理系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值