在/由docker创建的文件未显示在Windows主机目录中,但编辑执行

时间:2017-12-13 18:01:53

标签: ruby-on-rails ruby-on-rails-4 docker docker-compose docker-toolbox

我在使用Docker中的rails项目时遇到了一个奇怪的问题,经过3天的谷歌搜索,我无法找到解决方案。我确实设法在docker特定的论坛上找到了与我的问题类似的几个问题,但它们要么是新的docker还是未解决的。应该注意的是,我对码头工作的理解非常有限,因为这是我的第一个需要它的项目,我也从另一个使用mac而没有问题的开发人员那里继承了这个项目。

问题是由docker"创建的文件。未镜像到主机工作目录。

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

如果我运行说rails precompilegenerate命令它说明文件已经创建并且可以在正在运行的项目中看到,而不是Windows项目目录!

我在Windows 8上的虚拟框中使用了docker工具箱,boot2docker(我不能使用docker for windows)。我确保项目所在的目录是共享的,并且在User等中。我以通常的方式启动我的机器和会话:

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

然后

docker-compose up

当项目启动时,我跑了:

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

(以上摘自指南,未显示错误)

我刷新了windows目录并离开/重新进入了它。什么都没有补充。预先登记资产具有相同的结果。

LOG(第二次在命令上方运行)

  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 inspect的部分,我认为这与这个问题有关。仅供参考我的撰写文件位于项目目录中的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 INSPECT

"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",

在我的noob智慧中,我感觉它可能与"Propagation": "rprivate"属性有关?我已经用Google搜索了如何将其转换为rshared但在docker-compose文件中没有找到任何内容。

一如既往,我们将非常感谢任何帮助或指导。

在撰写此问题时,我发现this one来自另一篇与我的问题略有相似的帖子。

0 个答案:

没有答案
相关问题