Docker中创build的文件不会显示在Windows主机目录中,但是可以编辑

我在Docker的一个rails项目中遇到了一个奇怪的问题,那就是在googlesearch3天之后,我找不到解决scheme。 在Docker特定的论坛上,我确实设法find了类似于我的问题的一些问题,但是这些问题或者是针对较新的Docker,或者是未解决的。 应该指出的是,我对docker工作的理解非常有限,因为这是我第一个需要它的项目,我也从另一个开发人员那里inheritance了这个项目,他没有问题。

问题是由“docker”创build的文件没有镜像到主机的工作目录。

奇怪的是由docker / rails编辑的文件已经存在立即更新(容器到主机)例如:运行rake db:migrate我手动编辑(这是预期的)更改的schema.rb文件。 任何由我更改的文件也会更新(主机到docker / rails)我可以在刷新时立即看到更改。

Wheras如果我运行说一个rails precompilegenerate命令它说明文件已经创build,可以在运行的项目中看到,但不是Windows项目目录!

我正在使用docker工具箱,在Windows 8的虚拟框中的boot2docker(我不能使用docker for windows)。 我已经确定该项目的目录是在共享和用户等我启动我的机器和会议通常的方式:

 docker-machine start > env > eval(...etc) 

然后

 docker-compose up 

当项目结束时,我跑了:

 docker exec <containerID> rails generate controller <ControllerName> new edit --no-test-framework 

(以上从指导中获取,没有显示错误)

我刷新了Windows目录并将其重新input。 没有添加。 预编译资产的结果是一样的。

日志(第二次运行上面的命令)

  identical app/controllers/<<Controller_name>>_controller.rb route get '<<Controller_name>>/edit' route get '<<Controller_name>>/new' invoke erb exist app/views/<<Controller_name>> identical app/views/<<Controller_name>>/new.html.erb identical app/views/<<Controller_name>>/edit.html.erb invoke helper identical app/helpers/<<Controller_name>>_helper.rb invoke assets invoke coffee identical app/assets/javascripts/<<Controller_name>>.coffee invoke scss identical app/assets/stylesheets/<<Controller_name>>.scss Running via Spring preloader in process 62 

下面是我的撰写文件和docker检查的部分,我觉得这个问题是相关的。 仅供参考,我的撰写文件位于项目目录中的docker目录中。

泊坞窗,COMPOSE.yml

 version: '2' services: my-proj: command: ["/opt/docker/wait-for-it.sh", "db:5432", "--", "/opt/bin/setup"] image: rails:latest volumes: - ../:/opt expose: - 4000 ports: - 4000:4000 depends_on: - db stdin_open: true tty: true db: image: postgres:9.6.1 expose: - 5432 ports: - 5432:5432 environment: - POSTGRES_PASSWORD=psswd - POSTGRES_USER=user - POSTGRES_DB=my_proj_dev 

DOCKER检查

 "HostConfig": { "Binds": [ "/c/Users/ME/Docker/my-proj:/opt:rw" ], ... "Mounts": [ { "Type": "bind", "Source": "/c/Users/ME/Docker/my-proj", "Destination": "/opt", "Mode": "rw", "RW": true, "Propagation": "rprivate" } ], ... "Config": { ... "Image": "rails:latest", "Volumes": { "/opt": {} }, "WorkingDir": "/usr/src/app", 

在我的小白智慧中,我有一种感觉可能与"Propagation": "rprivate"财产? 我已经googled如何将其转换为rshared但没有发现在rshared -compose文件中这样做。

一如既往的帮助或方向将不胜感激。

在写这个问题的时候,我从另外一篇post中发现了一个与我的问题略有类似的post。

Interesting Posts