繁体   English   中英

无法使用docker-compose挂载mongodb目录卷

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM