環境
MacOS 12.0.1
Docker Engine v20.10.11
前提
安心してください。特に用意するものありません。
Composeファイル
dockerhubにあるmongoのイメージを使ってやっていきたいと思います。
version: '3'
services:
mongodb:
container_name: "mongodb"
hostname: mongodb
image: mongo
restart: always
ports:
- 27017:27017
volumes:
- ./db:/data/db
- ./configdb:/data/configdb
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: password
今回は、mongoのデフォルトポートの27017ポートを使用する。なので、コンテナ側の27017ポートをホスト側の27017に割り当てた。
また、データベースのデータはコンテナの*/data/*以下に格納されるので、ボリュームして、データが残るようにした。
いざ実行
先ほどのcomposeファイルのあるディレクトリで以下のコマンドを実行する。
# ↓起動のコマンド
$ docker-compose up -d
# ↓コンテナのbashを立ち上げるコマンド
$ docker-compose exec mongodb bash
# ↓コンテナを停止させるコマンド
$ docker-compose down
docker-compose ps
コマンドでコンテナが起動していることを確認できる。
$ docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
mongodb "docker-entrypoint.s…" mongodb running 0.0.0.0:27017->27017/tcp
mongoは立ち上がった瞬間mongodが実行されるので、何かする必要はありません。
気になる人はdockerイメージをぜひ実際に覗いてみてください。わかると思います。
MongoDBをGUI化して
MongoDB Compassを使ってデータベースをGUI化して、データの表示や操作をできるようにします。
mongo-expressでweb上で同じようなことができるらしいのですが、なんかうまくいかなかった。ってことでMongoDB Compass、やっていきます。
ちなみに超簡単です。
まず、Compass入ってない人はこのリンクからダウンロードしてください。
立ち上げると次の画面が出てくると思います。
Paste your connection string (SRV or Standard )と書いてある場所に以下のconnection stringを入力すると、もうGUIでデータの表示や操作が可能となります。
mongodb://root:password@localhost:27017
ちなみにフォーマットはmongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
というようになっています。(公式ドキュメントの説明)
さいごに
今後のことも考えて、docker-composeでMongoDBを構築しようと考えました。この先は好きなようにしてください。
ちなみにデータベースいじるのは、docker-compose exec
コマンドでコンテナに入り、mongo
コマンドでシェルを起動して、イジイジできます。