Docker 搭建 MongoDB

编写 docker-compose.yml

version: "3"
services:
  mongodb:
    image: mongo:4.1
    container_name: mongodb
    environment:
      MONGO_INITDB_ROOT_USERNAME: "root"
      MONGO_INITDB_ROOT_PASSWORD: "123456"
      TZ: "Asia/Shanghai"
    # 不可以映射目录的原因
    # https://www.jianshu.com/p/2757c19ba9a5
    # https://blog.csdn.net/u013506207/article/details/95524335
    volumes:
      - /root/docker/mongodb/data/mongo:/data/db:rw
      - /root/docker/mongodb/data/mongo_key:/mongo:rw
    ports:
      - "27017:27017"
    networks:
      - default
    command:
      --auth

这里需要注意,如果再用 WinDocker 来搭建 MongoDB 的话,是不可以映射目录的,不可以映射的原因也写在了 docker-compose.yml

最好是将数据目录挂载设置好,防止删除容器的话造成数据丢失

然后我们执行

docker-compose up -d

就会下载镜像然后启动容器了。

需要注意的是当容器启动后我们想要修改 MongoDB 的用户名密码就不可以在 docker-compose.yml 文件中修改了,需要进到 MongoDB 容器中去数据库修改,因为 docker-compose.yml 里的用户名密码变量在第一次启动容器时只是为你创建了一条用户,但每次重启时并不会为你更新用户信息,具体操作如下

#1、我们先进入容器内
docker exec -it mongodb bash
#2、我们登陆 mongo 数据库
mongo
use admin
db.auth("root", "123456")
#这时候已经登陆进来了,我们可以查看到所有在 admin 数据库中的集合, 
show collections
#也可以查看我们所有的系统用户
db.system.user.find()
#修改用户密码
db.updateUser("lutai", {pwd: "654321"}))
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!