![](/img/trans.png)
[英]Can't authenticate with mongoDB from docker-compose service
[英]Can't mount mongodb directory volume with docker-compose
在我的主项目目录中,我有另一个本地目录,我存储我的mongodb数据,其中包含./pokemondb
。 我知道这个目录充满了我的数据,因为我已经运行了mongoimport --db stats --colletion pokemon --file stats.json
并且可以确认mongo
shell中的数据。 我还有一个看起来像这样的docker-compose文件
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
并使用mongo
shell检查/data/db
目录来确认数据未正确传递,实际上没有任何内容。 我做错了什么,为什么我的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
如果您正在使用Docker Toolbox for OSX,那么只有VM可以使用主目录。 如果您位于主目录之外,则需要将另一个共享卷添加到Virtualbox VM,或者将项目移动到主目录下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.