使用docker-compose搭建和使用mongoDB环境
docker-compose.yml 文件
在DockerHub上有官方提供的Mongo镜像。
在将公式的ports和volumes添加到下面的docker-compose.yml文件中后,可以在放置该文件的文件夹中使用docker-compose up -d命令来启动应用。
在使用docker-compose up启动后,使用docker-compose ps命令确认容器已经成功启动(状态为Up)。
# Use root/example as user/password credentials
version: '3.1'
services:
mongo:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
ports:
- 27017:27017
volumes:
- ./db:/data/db
- ./configdb:/data/configdb
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: example
ME_CONFIG_MONGODB_SERVER: mongo
depends_on:
- mongo
项目说明
管理员名称和密码
这两个选项都可在MongoDB和Mongo-Express中找到,但是必须设置相同的名称和密码。
港口
正在进行端口映射。
可以通过主机和容器进行端口映射,或者只指定容器的端口。
如果只指定容器的端口,则主机的端口会随机确定(会显示在docker ps命令的PORTS列中)。
分量
将路径作为卷进行挂载。作为选项,指定主机端的路径(主机:容器)。
这是指定数据库数据和配置的本地:容器的方式。当运行docker-compose up -d时,将自动在本地创建文件夹和文件。
执行mongoDB命令
访问容器
docker-compose exec mongo bash
mongo admin -u root -p
(docker-compose.ymlに書いたパスワード)
在test数据库中的hoge表中添加记录并进行确认的示例。
show databases
use test
db.hoge.insert({ name: "test" })
db.hoge.find()
exit
访问mongo-express
点击以下网址。
http://0.0.0.0:8081/
当访问时会出现认证的页面,使用在docker-compose.yml中输入的AdminName和Password进行登录。
可以在浏览器中查看上述的测试数据库等内容。
对mongoDB的访问
这是一个使用Python访问的示例。
我们尝试使用pymongo进行访问。
客户的要求
客户端的主机不是localhost,而是指定容器的名称。
# OKな例
client = MongoClient('mongo', 27017)
# NGな例
client = MongoClient('localhost', 27017)
示例代碼
以下是用于访问容器中的MongoDB的示例代码。
# coding: utf-8
from pymongo import MongoClient
client = MongoClient('mongo', 27017)
db = client.test_db
collection = db.test_collection
# レコードの全削除
collection.drop()
# 100万件のレコード
collection.insert_many([{"id": i}for i in range(100)])
# idが1のものを探す
results = collection.find({"id": 1})
for result in results:
print(result)
停止容器
使用以下命令停止容器并删除网络。
docker-compose down