Docker 实战教程:使用 docker-compose 管理 MongoDB

今天我学习了如何使用 docker-compose 管理 Docker 上的 MongoDB,在这里和大家分享一下。
docker + docker-compose
我刚刚利用 docker 与 docker-compose 结合简化我的全栈业余项目。使用 docker-compose 来安装 MongoDB,Redis,ElasticSearch 这些容器很简单,只需要在需要时下载镜像,然后在不需要它们时删除容器即可。
待办事项清单
- 下载 MongoDB 镜像;
- 创建文件用于初始化经过身份验证的数据库和用户
- 编写 docker-compose 文件
- 使用创建的凭据登录 MongoDB
下载 MongoDB 镜像
通过执行以下命令提取最新的 MongoDB 映像:
$ docker pull mongo:latest

通过执行 $docker images 来显示拉取的镜像,以确保拉取成功:

创建文件用于初始化经过身份验证的数据库和用户
创建一个文件,命名为 init-mongo.js 或其他任何文件,确保它是一个Javascript 文件即可:

写入 docker-compose 文件
创建一个名为 docker-compose.yml 的文件以设置 docker-compose 应用栈。这是我们当前的目录结构

docker-compose.yml 内容:

参数说明
version填写 docker-compose 文件格式的版本,您可以更改为最新版本database第 3 行上的database仅仅是服务名称,您可以根据需要更改image必须是 mongo,因为您想从mongo镜像中创建一个容器container_name是您的容器的名称,它是可选的environment是将在 mongo 容器上使用的变量MONGO_INITDB_DATABASE数据库名称要与init-mongo.js相同MONGO_INITDB_ROOT_USERNAME填写 root 用户名MONGO_INITDB_ROOT_PASSWORD填写 root 密码volumes定义存放容器的文件/文件夹./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo-js:ro表示要将init-mongo.js复制到/docker-entrypoint-initdb.d/目录下,并设置为只读文件。/docker-entrypoint-initdb.d是一个已经在mongo 容器中创建的文件夹,用于初始化数据库。./mongo-volume:/data/db设置本地文件夹mongo-volume作为 MongoDB 的持久化数据存储文件夹;ports用于定义要公开的端口,在本例中,使用默认的 MongoDB 端口27017直到27019
执行
现在运行 $ docker-compose up 或 $ docker-compose up -d 在后台运行容器。
打开另一个终端以登录到该容器。键入 $ docker container ls以查看我们正在运行的容器。
使用容器名称登录容器:
$ docker exec -it <container-name> bash

使用创建的用户和数据库登录 MongoDB:
$ mongo -u <your username> -p <your password> --authenticationDatabase <your database name>### OR ###$ mongo -u <your username> --authenticationDatabase <your database name>

结语
至此已创建 MongoDB 容器、MongoDB 用户、超级用户和数据库。现在可以使用以下链接连接到数据库:
mongodb://YourUsername:YourPasswordHere@127.0.0.1:27017/your-database-name
感谢您的阅读!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
关于 LearnKu
推荐文章: