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の裏に置くための準備でやってみました