NoSQLデータベースでドキュメント指向データベースであるMongoDBを試したことがなかったため、今回、Docker上にMongoDBを構築してみます。その後、MongoDBのデータの操作を見てみたいと思います。
構築環境
・Mac PC(Appleシリコン)
・ローカル環境にDockerはインストールされているものとします。
Docker環境にMongoDBを構築する
Dockerファイルと初期データを登録するjsファイルを作成し、dockerコンテナを作成し、起動します。手順は次の通りです。
> docker network create net-mongo_test # Docker ネットワークの作成
> docker network ls | grep net-mongo_test # Docker ネットワーク作成の確認
56d8fc9f8ebb net-mongo_test bridge local
Docker file
FROM mongo:7.0-jammy
ENV LANG=ja_JP.UTF-8
ENV MONGO_INITDB_ROOT_USERNAME=root
ENV MONGO_INITDB_ROOT_PASSWORD=password
COPY init_db.js /docker-entrypoint-initdb.d/
EXPOSE 27017 # 接続ポート
初期投入データ:init_db.js
db = db.getSiblingDB('db_employee_info');
db.employee.insertMany([
{
employeeName: '田村',
age: 30,
created_date: new Date(),
updated_date: new Date()
},
{
employeeName: '山田',
age: 31,
created_date: new Date(),
updated_date: new Date()
},
{
employeeName: '中山',
age: 37,
created_date: new Date(),
updated_date: new Date()
},
{
employeeName: '佐藤',
age: 23,
created_date: new Date(),
updated_date: new Date()
},
{
employeeName: '佐々木',
age: 33,
created_date: new Date(),
updated_date: new Date()
},
{
employeeName: '吉田',
age: 35,
created_date: new Date(),
updated_date: new Date()
}
]);
> docker build --no-cache --tag mongo-test:latest . # コンテナイメージをビルドする
> docker images | grep mongo-test
mongo-test latest 42b2c022be68 6 seconds ago 761MB
> docker run -d \
--publish 27017:27017 \
--name mongodb-test \
--net net-mongo_test \
--volume db_test_mongo:/data/db mongo-test # コンテナを作成、起動する
> docker ps | grep mongodb-test
2516f7333eb9 mongo-test "docker-entrypoint.s…" 30 seconds ago Up 29 seconds 0.0.0.0:27017->27017/tcp mongodb-test
これで、コンテナが作成され、起動された状態となりました。
GUIツールを使用し、起動されたデータベースを確認する
データを確認・操作できるGUIツールが幾つかあります。その中で、無料で使用できるものが次のものです。
- MongoDB Compass https://www.mongodb.com/ja-jp/products/tools/compass
- Studio 3T(旧Robomongo) https://studio3t.com/
- NoSQL Booster https://nosqlbooster.com/home
今回は『NoSQL Booster』というものを使用しました。
インストールが完了したら、次のように接続先を入力し、MongoDBに接続します。
mongodb://root:password@localhost:27017
上記で作成された「employee」コレクションを開くと、データが表示されました。
今回はここまでとします。
次回、データ操作などを試してみたいと思います。
使いやすいGUIツールがあれば、コメントをお願いします。