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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: