Docker 部署 MongoDB 数据库

文章目录

官网地址

docker 网络

bash 复制代码
# 创建 mongo_network 网络
docker network create mongo_network
# 查看网络
docker network list
# 容器连接到 mongo_network 网络
docker network connect mongo_network mongo
# 断开容器 mongo_network 网络
docker network disconnect mongo_network mongo

mongod.conf

bash 复制代码
# 容器内查看 mongod.conf
cat /etc/mongod.conf.orig
  • 缩主机上创建 mongo/configdb/mongod.conf
bash 复制代码
# 数据
storage:
  dbPath: /data/db
  journal:
    enabled: true
# 日志
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
# 端口
net:
  port: 27017
  # bindIp: 127.0.0.1
# 安全
security:
  authorization: enabled

部署 MongoDB

bash 复制代码
# MongoDB镜像
docker pull mongo:4
docker run --name mongo \
--network mongo_network \
-p 27017:27017 \
-v $PWD/mongo/data:/data/db \
-v $PWD/mongo/configdb:/data/configdb \
-v $PWD/mongo/logs:/var/log/mongodb \
-e MONGO_INITDB_ROOT_USERNAME="root" \
-e MONGO_INITDB_ROOT_PASSWORD="4NuMDwIzp05BdKp7Bdmf" \
-d mongo:4 \
--config /data/configdb/mongod.conf
  • 指定服务执行器与缓存大小
bash 复制代码
docker run --name mongo \
--network mongo_network \
-p 27017:27017 \
-v $PWD/mongo/data:/data/db \
-v $PWD/mongo/configdb:/data/configdb \
-v $PWD/mongo/logs:/var/log/mongodb \
-e MONGO_INITDB_ROOT_USERNAME="root" \
-e MONGO_INITDB_ROOT_PASSWORD="4NuMDwIzp05BdKp7Bdmf" \
-d mongo:4 \
--config /data/configdb/mongod.conf \
--serviceExecutor adaptive --wiredTigerCacheSizeGB 1.2

部署 mongo-express

bash 复制代码
# mongo-express镜像
docker pull mongo-express:1.0.2
docker run --name mongo-express \
    --network mongo_network \
    -p 8081:8081 \
    -e ME_CONFIG_MONGODB_SERVER=mongo \
    -e ME_CONFIG_MONGODB_ADMINUSERNAME="root" \
    -e ME_CONFIG_MONGODB_ADMINPASSWORD="4NuMDwIzp05BdKp7Bdmf" \
    # 设置 mongo-express 登录账号密码
    -e ME_CONFIG_BASICAUTH=true \
    -e ME_CONFIG_BASICAUTH_USERNAME="admin" \
    -e ME_CONFIG_BASICAUTH_PASSWORD="123456" \
    -d mongo-express:1.0.2
  • 查看默认登录账号密码
bash 复制代码
# 进入 mongo-express 容器内
docker exec -it mongo-express /bin/bash
# 查看config.default.js
cat /app/config.default.js

注意: 默认登录账号密码是 admin/pass ,docker配置中已经将登录账号密码设置为 admin/123456

docker-compose.yml

yml 复制代码
services:
  mongo:
    image: mongo:4
    container_name: mongo
    restart: always
    ports:
      - 27017:27017
    volumes:
      - /etc/localtime:/etc/localtime
      - ./mongo/data:/data/db
      - ./mongo/configdb:/data/configdb
      - ./mongo/logs:/var/log/mongodb
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 4NuMDwIzp05BdKp7Bdmf
      command: --config /data/configdb/mongod.conf --wiredTigerCacheSizeGB 1
    # command: --config /data/configdb/mongod.conf --wiredTigerCacheSizeGB 1.2 --serviceExecutor adaptive
  mongo-express:
    image: mongo-express:1.0.2
    container_name: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_OPTIONS_EDITORTHEME: "ambiance"
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: 4NuMDwIzp05BdKp7Bdmf
      ME_CONFIG_MONGODB_SERVER: mongo
      # ME_CONFIG_MONGODB_URL: mongodb://root:4NuMDwIzp05BdKp7Bdmf@mongo:27017/
      ME_CONFIG_BASICAUTH: true
      ME_CONFIG_BASICAUTH_USERNAME: admin
      ME_CONFIG_BASICAUTH_PASSWORD: 123456
    depends_on:
      - mongo

注意: 登录账号密码已改为 admin/123456

MongoDB shell

bash 复制代码
# 进入 mongo 容器内
docker exec -it mongo /bin/bash
# 或直接进容器内的 MongoDB shell
docker exec -it mongo mongo
bash 复制代码
# 切换数据库
> use admin
# 管理员身份连接(MONGO_INITDB_ROOT_USERNAME配置值)
> db.auth("root",passwordPrompt())
# 输入密码(MONGO_INITDB_ROOT_PASSWORD配置值)

# 显示数据库
> show dbs
# 显示用户
> show users
bash 复制代码
# 帮助
$ help
# 退出
$ exit
相关推荐
掘根37 分钟前
【MySQL集群架构与实践5】使用Docker实现水平分片
mysql·docker·架构
TTBIGDATA1 小时前
【支持Ubuntu22】Ambari3.0.0+Bigtop3.2.0——Step7—Mariadb初始化
数据库·ambari·hdp·mariadb·bigtop·ttbigdata·hidataplus
大得3692 小时前
django的数据库原生操作sql
数据库·sql·django
tuokuac2 小时前
SQL中的HAVING用法
数据库·sql
爬山算法2 小时前
MySQL(173)MySQL中的存储过程和函数有什么区别?
数据库·mysql
jnrjian2 小时前
利用trigger对大表在线同步 UDI
数据库·sql
Ruimin05192 小时前
Mysql集群技术
数据库·mysql
lifallen2 小时前
深入解析RocksDB的MVCC和LSM Tree level
大数据·数据结构·数据库·c++·lsm-tree·lsm tree
追逐时光者2 小时前
一款免费、简单、高效的在线数据库设计工具
数据库
潘多编程3 小时前
云原生三剑客:Kubernetes + Docker + Spring Cloud 实战指南与深度整合
docker·云原生·kubernetes