我正在使用supervisord的docker来创建我们使用的某些服务的测试环境,如docker doc中所建议的那样。服务的基本配置正在运行,我可以/ bin / bash容器并从我的应用程序中使用它而没有问题(手动初始化)
现在我需要向mongo添加一些对象:基本数据来测试应用程序。有推荐的方法吗?使用bash脚本我会这样做:
...
# Launch Mongodb
/usr/bin/mongod &
sleep 3;
mongo --eval "db.getSiblingDB('MyDDBB').User.save( {...} )";
...
但是那个bash正是我想要摆脱的。 elasticmq的使用完全相同:当容器开始运行时,我需要运行一些创建一些队列的东西,所以可能有一种解决方案适合两者。
我愿意接受不同的解决方案(更换主管?)
答案 0 :(得分:1)
我不知道你是否还在寻找一个完美的解决方案,这可能不是那个,但它对我有用:
在我的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"]})
所以我想你必须适应几乎所有的东西,但它让我开始我的开发环境;)