使用docker-compose准备mongodb并进行初始设置

虽然不是多大的问题,但我对MongoDB的连接池一无所知,所以继续进行调查。
在使用Express + MongoDB进行个人开发时,由于晋升为团队开发,我将MongoDB使用docker compose进行了容器化,使每个人都能轻松地进行环境搭建。

在中文中进行详细阐述并提供一个选项。

    • Windows10

 

    WSL2

目录结构

就是这样的感觉。
将setup.js作为入口点,注入并创建数据库和集合,进行初始设置。

docker-compose.yaml
mongo
  ├ Dockerfile
  ├ setup.js

蒙古

docker-compose.yamlに直接mongoのイメージを指定してentrypointを実行する方法がわからなかったのでDockerfileからビルドすることにしました。
(docker-composeでやる方法あるかもですがあまり調査に時間かけたくなかったので。。。。)

FROM mongo:4

# mongo自身のrootユーザとパスワード設定
ENV MONGO_INITDB_ROOT_USERNAME sample_user
ENV MONGO_INITDB_ROOT_PASSWORD sample_pass

ENV TZ="Asia/Tokyo"
RUN echo $TZ > /etc/timezone

# setup.jsをentrypointにコピーし、イメージ作成時に初期セットアップを実行
COPY setup.js /docker-entrypoint-initdb.d/
// sample_dbというデータベースにsampleというコレクションを作成
db = db.getSiblingDB('sample_db');
db.createCollection('sample');

创作

只需要在docker-compose.yaml中指定上面准备好的Dockerfile即可。

version: '3.1'

services:

  mongo:
    build: ./mongo # ここでDockerfileが配置されているディレクトリを指定
    restart: always
    ports:
      - 27017:27017
    volumes:
      - ./mongo/db:/data/db
      - ./mongo/configdb:/data/configdb

  # せっかくなのでmongo-expressも使えるようにセットアップ
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8080:8080
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: sample_user
      ME_CONFIG_MONGODB_ADMINPASSWORD: sample_pass
      ME_CONFIG_MONGODB_SERVER: mongo
    depends_on:
      - mongo

只要能够成功启动,像是使用docker-compose up -d之类的命令就可以了。
我是按照RDB的DDL方式进行了mongo的设置,但也许对于无模式的mongodb来说,这种初始化设置的工作是不需要的呢??
对不起,我还不够了解,但如果对其他人有帮助的话,我会感到幸福。

bannerAds