2017-02-08 114 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

相關問題