0
0

More than 1 year has passed since last update.

MongoDB のデータベース作成からデータ挿入まで(Docker)

Last updated at Posted at 2023-07-17

MongDBをdockerで触ったときのメモです。
初心者向けで、DB構築からデータ挿入をとりあえず出来るくらいです。

docker-compose.yaml
version: '3'
services:
  mongo:
    image: mongo
    ports:
      - 27017:27017
    volumes:
      - ./db/data:/data/db
      - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d:ro
    environment:
      MONGO_INITDB_ROOT_USERNAME: "root"
      MONGO_INITDB_ROOT_PASSWORD: "password"
    command: ["mongod", "--bind_ip",0.0.0.0]
    container_name: "mongo"

[MONGO_INITDB_ROOT_USERNAME]と[MONGO_INITDB_ROOT_PASSWORD]を環境変数として、指定しておくと、adminデータベースに管理者ユーザとパスワードを自動的に作成してくれます。
commandは「mongod --bind_ip 0.0.0.0」を実行をすることを示しています。これを実行すると、mongodbサーバのすべてのインタフェースから接続を受け付けるようになります。

      - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d:ro

上記部分は、docker-entrypoint-initdb.d内のスクリプトを実行するための設定です。mongodbが作成された後に、実行されます。このdocker-entrypoint-initdb.dの中には以下のjavascriptを保存しておきます。

init-mongo.js
db = db.getSiblingDB('admin');
db.auth('root','password');
db = db.getSiblingDB('TestDB');
db.createCollection('TestCollection');

上記javascriptはadminデータベースに接続し、db.auth()で認証をします。rootユーザとして認証出来ているので、その他のデータベースへの操作も可能となります。
認証出来たら、db.getSiblingDB('TestDB');で任意のデータベース(今回はTestDBという名前のデータベース)に切り替え、createCollectionでコレクションを作成します。
コレクションを作成したら、コレクションに対し、データを挿入していきます。

データの挿入はpymongoを使用して、pythonから実行する方法もありますが、今回はコンソールから実行してみます。

mongosh --eval "db.TestCollection.insert({name:"testName"})" --username "root" --password "password"

成功すると、以下の様に返ってきます。

{
  acknowledged: true,
  insertedId: ObjectId("XXXXXXXXXXXXXXXXXXXXX")
}

補足?

今回は管理者ユーザを使用していますが、ユーザ作成とロール作成が必要ですね。。。
とりあえず、触るだけの状態

参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0