使用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
广告
将在 10 秒后关闭
bannerAds