Mongodb 用于Mongo Docker映像的多个命令

Mongodb 用于Mongo Docker映像的多个命令,mongodb,docker,Mongodb,Docker,我试图在Docker compose文件中为Mongo实例编写一些设置脚本。似乎第二个命令从未运行过,它应该将此容器作为repl集中的主容器启动。这是我的命令: docker run -d mongo /bin/bash -c "mongod --replSet \"test\"; mongo --eval \"rs.initiate({_id:'test',members:[{_id:0,host:'localhost:27017'}]})\"" 然后,当我执行到容器中并执行rs.confi

我试图在Docker compose文件中为Mongo实例编写一些设置脚本。似乎第二个命令从未运行过,它应该将此容器作为repl集中的主容器启动。这是我的命令:

docker run -d mongo /bin/bash -c "mongod --replSet \"test\"; mongo --eval \"rs.initiate({_id:'test',members:[{_id:0,host:'localhost:27017'}]})\""

然后,当我执行到容器中并执行rs.config时,它表示尚未运行initate。那么,如何发出多个命令来启动Mongo容器呢?

看起来您正在启动Mongo守护进程作为第一个命令

您确定此命令返回吗?在容器中docker exec之前,它似乎没有完成执行。这可能是第二个命令没有执行的原因

也许试着把命令放在后台&

docker run -d mongo /bin/bash -c "mongod --replSet \"test\" &; mongo --eval \"rs.intiate({_id:'test',members:[{_id:0,host:'localhost:27017'}]})\""

我认为这不是问题所在。我让docker立即运行-d mongo/bin/bash-c mongod-replSet\test\然后运行docker exec PID/bin/bash-c mongo-eval\rs.initiate{u id:'test',成员:[{u id:0,主机:'localhost:27017'}]}\。一切都很顺利。所以我尝试了docker运行-d mongo/bin/bash-c mongod-replSet\test\&sleep 10;mongo-eval\rs.initiate{{u-id:'test',成员:[{u-id:0,主机:'localhost:27017'}]}\我仍然遇到同样的问题。我解决了一半。docker run-d mongo/bin/bash-c mongod-replSet\test\&sleep 10;mongo-eval\rs.initiate{u id:'test',成员:[{u id:0,主机:'localhost:27017'}]};sleep 1000000000工作正常,但现在没有连接的容器除外,因为当mongod进程终止到mongod进程时,容器将退出。只是睡了很长一段时间。我对linux的了解还不够,无法弄清楚如何将它连接回mongod进程。好吧,我也弄清楚了这一部分。docker run-d mongo/bin/bash-c mongod-replSet\test\&sleep 10;mongo-eval\rs.initiate{u id:'test',成员:[{u id:0,主机:'localhost:27017'}]};等等$pgrep mongod