どうも、nippa です。
NoSQL のデータベースを利用したく、MongoDB を docker で構築しようと思います。
今回はMongoDB の公式 imageを利用します。
- 環境
- ディレクトリ構造(フォルダ構成)
- docker-compose ファイル
- docker compose の起動
- docker compose の停止
- Mongo Express へのアクセス
- 感想
環境
- 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 を利用してみようと思います。
ではでは、また次回。