MongoDBとMongo-expressをdocker-composeで立ち上げる

プログラミング

はじめに

この記事では、MongoDBの環境をdocker-composeで立ち上げる方法を記載します。

また、GUIツールとして、Mongo-expressも用意します。

この記事で使用しているソースコード一式は以下のGitHubで利用することができます。

GitHub - Joichiro433/Blog-docker-mongo
Contribute to Joichiro433/Blog-docker-mongo development by creating an account on GitHub.

使用する docker-compose.yml ファイル

使用するファイル一式の階層構造は下記となります。

.
└─ docker-compose.yml

docker-compose.ymlファイルだけです。docker-compose.ymlの内容は以下のようになります。

version: '3.1'

services:
  mongo:
    image: mongo
    container_name: mongo_db
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: password
    ports:
      - 27017:27017
    volumes:
      - ./mongodb_data:/data/db
      - ./configdb:/data/configdb

  mongo-express:
    image: mongo-express
    container_name: mongo_express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: password
      ME_CONFIG_MONGODB_SERVER: mongo
    depends_on:
      - mongo

ここでは、mongodbのデータを /data/db にマウントすることで永続化しています。

また、ユーザーネームは root、パスワードは password と設定しています。

MongoDBの環境を立ち上げる

次のdocker-composeコマンドを実行して、MongoDBの環境を立ち上げます。

$ docker-compose up -d

# 出力
Creating network "docker-mongo_default" with the default driver
Creating mongo_db ... done
Creating mongo_express ... done

実行が完了するとMongoDBが立ち上がります。http://localhost:8081 にアクセスすると、Mongo-expressが確認できます。

pythonでMongoDBを操作する

pymongoというライブラリを用いてmongoDBを操作してみます。pymongoは次のコマンドでインストールできます。

$ pip install pymongo

pythonのサンプルコードは次の通りです。

from pymongo import MongoClient


HOST = 'localhost'
PORT = 27017
USERNAME = 'root'
PASSWORD = 'password'

DB_NAME = 'demo_db'
COLLECTION_NAME = 'demo_collection'


if __name__ == '__main__':
    client = MongoClient(host=HOST, port=PORT, username=USERNAME, password=PASSWORD)
    db = client[DB_NAME]
    collection = db[COLLECTION_NAME]

    data = [
        {'username': 'Alice', 'score': 100},
        {'username': 'Bob', 'score': 90}
    ]
    collection.insert_many(data)
   

上記を実行後、http://localhost:8081 にアクセスすると、新しくデータが作成されていることが確認できます。

タイトルとURLをコピーしました