mongodbのデータベースとユーザーを初期設定をdocker-composeでやってみた

mongodbのデータベースとユーザーを初期設定をdocker-composeでやってみました

使うイメージ
image: mongo

試行錯誤の結果、
docker-compose.ymlはこんな感じ

version: '2'
services:
  mongo:
    container_name: mongo
    image: mongo
    ports:
    - "27017:27017"
    volumes:
    - ./mongo/data:/data/db
    - ./mongo/init/:/docker-entrypoint-initdb.d/
    environment:
    - MONGO_INITDB_DATABASE=fluentd

MONGO_INITDB_DATABASEは、使うデータベース名を指定します
(mongoコンテナ内の /docker-entry.point に処理が書いてあります)

./mongo/data にmongodbのデータを永続化させます

./mongo/init/init.js に初期化のスクリプトをこんな感じで

var newUsers = [
  {
        user: 'logger',
        pwd: 'password',
        roles: [
            {
                role: 'readWrite',
                db: 'fluentd'
            }
        ]
    }
];

var currentUsers = db.getUsers();
if (currentUsers.length === newUsers.length) {
    quit();
}
db.dropAllUsers();

for (var i = 0, length = newUsers.length; i < length; ++i) {
    db.createUser(newUsers[i]);
}

参考: fluentd + MongoDB でログサーバー構築 - Qiita

これで、
$ docker-compose up -d
で起動

fluentdデータベースにloggerユーザーが書き込めるようになりました
docker runでもパラメータ渡してやれば出来ますが面倒なので、composeを使いました

fluentdの裏に置くための準備でやってみました