mongodb - Docker +主管:如何初始化服务(mongo&elasticmq)?

标签 mongodb docker supervisord

我在supervisord中将docker与docker doc结合使用来创建带有我们使用的某些服务的测试环境。服务的基本配置正在运行,我可以/ bin / bash容器并从我的应用程序中使用它,而不会出现问题(需要手动进行一些初始化)

现在,我需要向mongo添加一些对象:基本数据以测试应用程序。有推荐的方法吗?使用bash脚本,我将执行以下操作:

...
# Launch Mongodb
/usr/bin/mongod &
sleep 3;
mongo --eval "db.getSiblingDB('MyDDBB').User.save( {...} )";
...

但那是我想要摆脱的重击。 elasticmq的用法完全相同:我需要运行一些在te容器开始运行时创建一些队列的东西,因此可能有两种解决方案都适合。

我愿意接受其他解决方案(更换主管?)

最佳答案

我不知道您是否仍在寻找理想的解决方案,这可能不是一个解决方案,但对我有用:

在我的docker-compose.yml中,对其进行设置,使其使用自己的入口点:

mongodb:
    image: mongo:2.4
    entrypoint: /code/devops/current/docker/dev/mongodb/entrypoint.sh
    volumes:
        - ~/Workspaces/project/devops/:/code/devops/current/

我的入口点首先在后台启动mongod,执行一个javascript文件kill mongo并将其作为主要过程启动,如下所示:
#!/bin/bash

mongod --noprealloc --smallfiles &
PID="$!"

echo "WAITING FOR INIT"
sleep 3

echo "--> init"
mongo /code/devops/current/docker/dev/mongodb/init.js
echo "--> init [DONE]"

kill $PID

echo "WAITING FOR KILL"
sleep 3

mongod --noprealloc --smallfiles --auth

在init.js中,我确保创建了我的表,并且需要用户访问它,因此它是一堆的:
db = db.getMongo().getDB('mydbname')
db.createCollection('mycollection')
db.addUser({user: "devuser", pwd: "mypassword", roles: ["readWrite"]})

因此,我想您必须对几乎所有内容进行调整,但这会让我进入开发环境;)

关于mongodb - Docker +主管:如何初始化服务(mongo&elasticmq)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091502/

相关文章:

php - 使用 Docker 我得到错误 : "SQLSTATE[HY000] [2002] No such file or directory"

python - 为什么uWSGI在Docker中启动失败?

linux - 如何设置 Mono 的路径以便主管知道它?

javascript - Meteor - Sub 的异常(exception)。发布函数返回非游标数组

mongodb - Mongo 复制集合和用户权限

mongodb - 如何在 Kubernetes 中使用持久卷部署 MongoDB?

linux - NginX 作为多个子域的 HTTPS 反向代理?

docker - minikube docker-env 是什么意思?

ruby-on-rails - 如何在前台阻止 dockerized nginx 泛滥日志?

node.js - 在 OpenShift 上扩展 MongoDB 与使用 MongoLab