使用Docker一键部署MongoDB
使用Docker一键部署MongoDB
作者:Shon
版本:1.0.2
最后更新:2018-11-12
Prerequisites
本文默认读者具备以下知识,不会对此进行展开:
- Linux的基础使用
- MongoDB的基础使用
- mongo-express的基础使用
- JavaScript的基础使用
- Docker的安装与下载
- Docker Compose的安装与下载
效果
通过一条指令sudo docker-compose up -d
(-d
表示在后台运行,如果想要监视Docker容器的运行情况,可不加)达到以下效果:
- 在本地一个Docker容器中建立并运行MongoDB,端口为27017
- 在本地一个Docker容器中建立并运行mongo-express,端口为8080
- 初始化MongoDB:
- 创建一个新用户,并设置密码和权限
- 创建一个新的DB
- 创建一个新的Collection
如图,newDB就是我们新建的DB。
文件结构
├── docker-compose.yml
├── Dockerfile
└── setup└── setup.js
解析
setup.js
用于初始化MongoDB。
db = db.getSiblingDB('newDB'); // 创建一个名为"newDB"的DB
db.createUser( // 创建一个名为"shon"的用户,设置密码和权限{user: "shon",pwd: "shonlovescoding",roles: [{ role: "dbOwner", db: "newDB"}]}
);
db.createCollection("newCollection"); // 在"newDB"中创建一个名为"newCollection"的Collection
docker-compose.yml
用于docker-compose
,相较于纯粹的docker
指令,减少了在命令行中的参数数量,而选择把对Docker容器的相关配置写在了本文件中
version: '3.1' # 与镜像有关,这里只支持3.1
services:mongo: # 会自动从Docker Hub上自动获取mongo这个镜像build: ./restart: alwaysports:- 27017:27017 # 本地端口(可自定义):容器内默认端口(mongo设定为27017)volumes:- ./setup:/docker-entrypoint-initdb.d/ # 本地文件路径:容器内映射路径environment: # admin账号和密码MONGO_INITDB_ROOT_USERNAME: adminMONGO_INITDB_ROOT_PASSWORD: DoNotPeek# 如果不需要MongoDB的网页端,以下内容可以不加mongo-express: # 会自动从Docker Hub上自动获取mongo-express这个镜像image: mongo-expressrestart: alwaysports:- 8080:8081 # 本地端口(可自定义):容器内默认端口(mongo-express设定为8080)environment: # 这里只能使用与上方MONGO_INITDB_ROOT_USERNAME相同的root账号ME_CONFIG_MONGODB_ADMINUSERNAME: adminME_CONFIG_MONGODB_ADMINPASSWORD: DoNotPeek
Dockerfile
用于初始化Docker容器
FROM mongo
# 将本地的setup.js映射到Docker容器中
COPY ./setup/setup.js /docker-entrypoint-initdb.d/
验证
通过mongodb-org-shell
来连接(安装请见官方文档):
$ mongo -u shon -p shonlovescoding --host localhost --authenticationDatabase newDB
MongoDB shell version: 3.2.20
connecting to: localhost:27017/test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, seehttp://docs.mongodb.org/
Questions? Try the support grouphttp://groups.google.com/group/mongodb-user
> show dbs
newDB 0.000GB
> use newDB
switched to db newDB
> show collections
newCollection
注意,mongo官方的Docker镜像默认是开启登陆认证的,因此--authenticationDatabase
不可少。
问题
这套”只用Docker一键部署MongoDB“的机制在很大程度上方便了开发者部署Mongo环境,但因开发匆忙,目前的版本也存在了一些问题,在之后的版本中,本文可能会尝试改进配置来解决这些问题:
- mongo-express目前只能使用root账户登陆,这非常危险
- 数据文件的存储应用volume映射到本地位置,而不应和Docker容器同生共死,即使设置了
restart:always
- 使用本地存储也方便了数据备份
代码
GitHub: docker_mongo
更新日志
- 2018-11-12: V1.0.2
- Dockerfile 并非可选,而是必需
- 2018-08-20:V1.0.1
- 对
docker-compose.yml
中的mongo-express进行注释 - 更新GitHub地址
- 对
- 2018-08-16: V1.0.0 初始版本
使用Docker一键部署MongoDB相关推荐
- IDEA配置Docker一键部署SpringBoot项目(企业级做法)
Docker一键部署SpringBoot项目 前言 一.开启Linux的Docker远程访问 1.1 安装vim工具: 1.2 修改`daemon.json`的配置: 1.3 加入配置: 1.4 重新 ...
- 利用Docker一键部署若依前后端分离项目详细教程
本文内容,主要介绍一下,在Linux服务器中如何利用Docker一键部署若依前后端分离项目. 若依前后端分离版本开源地址:https://gitee.com/y_project/RuoYi-Vue 目 ...
- docker一键部署php开发环境
docker-phper docker 一键部署php开发者环境 项目地址 特性 真 · 一键部署 清晰配置与日志文件 数据持久化 自定义php扩展 项目结构 │ .env 系统配置 │ docker ...
- 在线乞讨系统 Docker一键部署
begger乞讨网 在线乞讨 全球要饭系统 前端界面 后端界面 H2 数据库 console 运行命令 访问信息 支付平台 在线乞讨 全球要饭系统 在线乞讨全球要饭项目,支持docker一键部署,支持 ...
- docker 一键部署前后端项目 ruoyi
使用 docker 一键部署前后端项目 这里我以开源项目ruoyi 的 vue 前后端为例,想要通过 docker 一键跑起来,需要对项目做部分调整. 修改 springboot yml 的配置 ap ...
- docker一键部署springboot项目(三)
上一篇,大概讲了下早docker中部署redis.tomcat(JavaWeb项目)和nginx,当我们做了那么多,终于部署好一套完整的环境之后,要是移植怎么办,这里呢,就算是docker的好处了吧, ...
- docker部署python web应用_使用docker一键部署Web应用
前几天借着部署一个小系统的机会尝试了一把docker,把Web应用,数据库,nginx统统都用docker管理.把打包好的代码扔到服务器上一键就部署好了,不需要考虑服务器的环境问题,简直不要太爽.但感 ...
- docker一键部署jenkins服务(一)
一.简介 1)docker是当前流行的容器技术,通过docker技术可以实现快速的部署常见的服务. 2)jenkins是当前主流的持续集成的工具和框架(CI),通过jenkins可以实现项目的智能化构 ...
- Docker安装部署MongoDB及MySql和MongoDB的语法对比
MongoDB是一个免费的.开源的.跨平台分布式面向文档存储的数据库,由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品 ...
- idea docker 一键部署实战
1.准备源文件 package com;public class App {public static void main(String[] args) {System.out.println(&qu ...
最新文章
- Numpy入门教程:练习作业02
- 如何让摄像头变成“暗夜之眼”?英特尔开发了一套基于FCN的成像系统
- 【.net部署】Server Error in ‘/‘ Application.错误解决方案
- 厉害!Java集合框架综述,这篇让你吃透!
- java 151建议_编写高质量代码改善java程序的151个建议——导航开篇
- 管理系统制作的python代码_python学生管理系统代码实现
- 解决页面上JS文件加载过慢问题
- C++ 模板实例化与调用
- 基于TensorRT量化部署RepVGG模型
- 傅里叶变换和拉普拉斯变换
- java多网卡组播,多网卡 组播
- 软件测试面试题:微信红包如何测试?
- vnc远程控制软件下载,有哪些实用的vnc远程控制软件下载
- 控制台安装selenium运行浏览器报错TypeError: ‘module‘ object is not callable
- Github连接不上问题
- 2020网络安全NISP一级(模拟题七)
- 笔记本电脑也是一种微型计算机,计算机一级试题 很权威的哦
- 我在帝都买房后,又开始思考怎样赚更多的钱了。
- 人脸检测与美颜技术介绍(OpenCV)
- Mldonkey命令解释
热门文章
- VHDL实现矩阵键盘检测
- 1428D - Bouncing Boomerangs(思维+构造+贪心)
- radius mysql md5_Radius认证
- 如何把两个pdf合并成一个pdf?
- 《中华颂》朗诵比赛准备
- 性能和稳定性测试报告模板
- CSS 伪类 after 右侧线
- C语言之i++,++i,i--,--i
- macosx安装之旅(8)-常见问题(转载)
- 删除后别人的微信号变成wxid_怎么恢复删除的微信好友?教程在手,不怕恢复不了!_...