gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:43:01 25 4
gpt4 key购买 nike

我在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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com