2017-09-25 39 views
2

我可以從其他容器播種正在運行的mongodb容器嗎? 我可以用docker-compose做到這一點,但這意味着每次啓動它時都會播種,並會在我的數據庫中創建重複數據。我可以在沒有碼頭構成的情況下從其他碼頭集裝箱種下一個mongodb碼頭集裝箱嗎?

這是我撰寫文件的一部分:

version: '5.2' # specify docker-compose version 

# Define the services/containers to be run 
services: 
    database: # My database 
    image: mongo # specify image to build container from 
    ports: 
     - "27017:27017" # specify port forewarding 

Dockerfile我想用種子

FROM mongo 

COPY init.json /init.json 
CMD mongoimport --host=127.0.0.1 --port=27017 --db mean-docker --collection authusers --type json --file /init.json --jsonArray 

init.json

[ 
    { 
    "name": "foo", 
    "pass": "bar" 
    }, 
    { 
    "name": "foo2", 
    "pass": "bar2" 
    } 
] 

在此設置下我得到一個:

Failed: error connecting to db server: no reachable servers 

回答

0

要從另一個容器訪問容器,他們應該在公共網絡中。

Docker-compose爲所有服務創建公共網絡。

要連接到現有的網絡新容器,您可以使用 docker network connect

可能是更好的選擇,播種您的數據庫將使用docker exec命令是這樣的:

docker exec [OPTIONS] existing_container_with_mongodb mongoimport [your_args] 
+0

命令行的解決方案似乎是最好的去的方式謝謝!但是我現在得到一個「失敗:打開init.json:沒有這樣的文件或目錄」 –

+0

@ H.Hakvoort是的,你應該把文件放入容器或從這個文件傳遞數據作爲命令行參數。把文件你不能將文件夾鏈接到你將存儲這些文件的mongodb容器或使用['docker cp'](https://docs.docker.com/engine/reference/commandline/cp/) – RidgeA