2017-02-08 117 views
0

我正在尝试为Docker撰写文件中的Mongo实例编写一些脚本。我好像第二个命令永远不会运行(它应该将此容器作为repl集中的主要启动项)。这里是我的命令:Mongo Docker镜像的多个命令

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

当我然后执行到容器并执行一个rs.config,它说明没有运行。那么,我该如何去发布多个命令来启动Mongo容器呢?

回答

1

它看起来像你开始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'}]})\"" 
+0

我不认为这是问题。我做了码头运行-d mongo/bin/bash -c“mongod --replSet \”test \“”IMMEDIATELY后跟docker exec PID/bin/bash -c“mongo --eval \”rs.initiate({_ id: '测试',成员:[{_ ID:0,主机: '本地主机:27017'}]})\ “”。一切正常。所以我试着码头运行-d mongo/bin/bash -c“mongod --replSet \”test \“&sleep 10; mongo --eval \”rs.initiate({_ id:'test',members:[{_ id :0,host:'localhost:27017'}]})\“”,我仍然遇到同样的问题。 – Hohohodown

+0

我想通了一半。 docker run -d mongo/bin/bash -c“mongod --replSet \”test \“&sleep 10; mongo --eval \”rs.initiate({_ id:'test',members:[{_ id:0 ,host:'localhost:27017'}]})\“; sleep 10000000000” 除了现在容器没有“附加”(当容器将在mongod进程结束时退出)到mongod进程之外,它只是一个愚蠢的睡眠很长一段时间。我对linux的了解不多,不知道如何将它重新连接到mongod进程。 – Hohohodown

+0

好吧我也想出了那部分。 docker run -d mongo/bin/bash -c“mongod --replSet \”test \“&sleep 10; mongo --eval \”rs.initiate({_ id:'test',members:[{_ id: 0,host:'localhost:27017'}]})\“; wait $(pgrep mongod)” – Hohohodown

相关问题