IT技術で仕事を減らしたい!

ITエンジニアのメモ+α

Docker MongoDBの構築

どうも、nippa です。

NoSQL のデータベースを利用したく、MongoDB を docker で構築しようと思います。

今回はMongoDB の公式 imageを利用します。

環境

  • macOS 11.6
  • Docker 20.10
  • MongoDB 5.0.10

ディレクトリ構造(フォルダ構成)

今回のディレクトリ構造(フォルダ構成)は以下のようになっています。

├── docker
│   └── mongodb
│       ├── configdb
│       └── db
└── docker-compose.yml

local のdocker/mongodb/dbを mongo DB のデータを保存するためのディレクトリになっています。

docker-compose ファイル

mongo データベースサーバ + mongo-express の構成になっています。

docker-compose.ymlの内容は以下の通りです。

version: "3"
services:
  mongodb:
    image: mongo
    restart: always
    container_name: mongodb
    hostname: mongodb
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=example
    volumes:
      - ./docker/mongodb/configdb:/data/configdb
      - ./docker/mongodb/db:/data/db
    networks:
      - common-link
  mongo-express:
    image: mongo-express
    container_name: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongodb:27017/
    depends_on:
      - mongodb
    networks:
      - common-link
networks:
  common-link:
    driver: bridge

今回はすべてのサービスをbridgeネットワークで構成しています。

必要に合わせて、変更してください。

docker compose の起動

docker-compose.ymlが配置された階層で、以下のコマンドを実行すると、MongoDB と Mongo Express が起動します。

docker compose up -d

起動状況の確認を以下で行います。

docker ps -a

# 出力
CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS          PORTS                      NAMES
fe176c480beb   mongo-express   "tini -- /docker-ent…"   10 seconds ago   Up 2 seconds    0.0.0.0:8081->8081/tcp     mongo-express
f6b94f65e9bb   mongo           "docker-entrypoint.s…"   10 seconds ago   Up 10 seconds   0.0.0.0:27017->27017/tcp   mongodb

docker compose の停止

docker-compose.ymlが配置された階層で、以下のコマンドを実行すると、MongoDB と Mongo Express が停止します。

docker compose down

起動状況の確認を以下で行います。

docker ps -a

# 出力
CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS          PORTS                      NAMES

Mongo Express へのアクセス

Web ブラウザから localhost:8081にアクセスすると Mongo Exporess が表示されます。

Mongo Express を使ってデータベースの管理を置こうことができます。

ただし、Web には認証がありませんので、本番環境で利用する際はご注意ください。

感想

今回、Mongo DB を Docker 環境で行いました。

次は アプリケーションから Mongo DB を利用してみようと思います。

ではでは、また次回。