在我的主项目目录中,我有另一个本地目录,我存储我的mongodb数据./pokemondb
。我知道这个目录充满了我的数据,因为我已经运行mongoimport --db stats --colletion pokemon --file stats.json
并且可以确认mongo
shell中的数据。我还有一个看起来像这个
pokemon-app:
build: .
ports:
- "3000:3000"
links:
- mongo
mongo:
image: mongo:3.2.4
ports:
- "27017:27017"
volumes:
- "./pokemondb:/data/db"
我运行docker-compose up
并且没有错误发生。但问题是mongodb目录/data/db
现在不包含我试图传递的已安装卷。我可以通过执行docker exec -ti [mongo container id] bash
并使用/data/db
shell检查mongo
目录来确认数据没有正确传递,实际上没有任何内容。我做错了什么,为什么我的mongodb数据目录没有正确安装音量?
编辑:我发现了一个意想不到的解决方案。我的一个问题是我对Docker卷的基本误解。我以前认为docker卷是为了在启动时将数据从本地机器复制到docker容器中。但事实上,docker卷用于保存docker容器中生成的本地计算机上的数据。我上面提到的原始问题的解决方案是创建一个dockerfile,将数据复制到映像中,然后在容器启动时将数据导入数据库。我的最终docker撰写文件看起来像这样。
app:
build: .
ports:
- 3000:3000
links:
- mongodb
mongodb:
image: mongo:3.2.4
ports:
- 27017:27017
stats:
build: ./stats
links:
- mongodb
答案 0 :(得分:0)
如果您正在使用Docker Toolbox for OSX,那么只有主目录可供VM使用。如果您不在主目录之外,则需要将另一个共享卷添加到Virtualbox VM,或者将项目移动到您的主目录下。