我可以从其他容器为正在运行的 mongodb 容器做种吗? 我可以用 docker-compose 做到这一点,但这意味着它会在我每次启动它时被播种,并会在我的数据库中创建重复数据。
这是我撰写文件的一部分:
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
初始化.json
[
{
"name": "foo",
"pass": "bar"
},
{
"name": "foo2",
"pass": "bar2"
}
]
通过此设置,我得到:
Failed: error connecting to db server: no reachable servers
最佳答案
要从另一个容器访问容器,它们应该在公共(public)网络中。
Docker-compose 为所有服务创建公共(public)网络。
要将新容器连接到现有网络,您可以使用 docker network connect
使用 docker exec 为您的数据库播种可能是更好的选择像这样的命令:
docker exec [OPTIONS] existing_container_with_mongodb mongoimport [your_args]
关于mongodb - 我可以在没有 docker-compose 的情况下从其他 docker 容器播种 mongodb docker 容器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46401400/