无法访问Vagrant Sync Folder中的文件

时间:2015-12-01 02:40:53

标签: node.js ubuntu docker npm vagrant

我在Vagrant VM中运行docker容器(以Vbox 5.0.10作为提供程序),这是我的Vagrantfile:

Vagrant.configure(2) do |config|

  config.ssh.insert_key = false

  config.vm.box = "ubuntu/trusty64"

  config.vm.box_check_update = false

  config.vm.network "forwarded_port", guest: 80, host: 8585

  config.vm.provider "virtualbox" do |vb|
    vb.cpus = 2
  end

  config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"

  config.vm.provision "shell", inline: <<-SHELL
     sudo apt-get update
  SHELL

  #Docker
  config.vm.provision "docker" do |d|
    #d.build_image "/vagrant/app"
  end

  #Docker-compose
  config.vm.provision :docker_compose, yml: "/vagrant/project/web-project/docker-compose.yml", rebuild: true, run: "always"

end

我在/ vagrant / project / web-project / node_modules中有一个由npm install生成的文件夹。 除此文件夹外,几乎所有node_modules文件夹中的文件和文件夹都可以访问:

 /vagrant/project/web-despatch/node_modules/babel-preset-es2015/node_modules/babel-plugin-transform-es2015-block-scoping/
node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js

错误是:

OSError: [Errno 2] No such file or directory: '/vagrant/project/web-project/nod
e_modules/babel-preset-es2015/node_modules/babel-plugin-transform-es2015-block-s
coping/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/ch
alk/node_modules/has-ansi/node_modules/ansi-regex/index.js'

然后我继续通过ssh登录到vagrant来识别问题:

Yoesoff_I@MTPC432 /cygdrive/d/OS/vweb-project
$ vagrant.exe ssh   #yes_I'm_using_cygwin

现在我在流浪汉VM中,我转到无法找到文件夹的文件夹:

vagrant@vagrant-ubuntu-trusty-64:~$ cd /vagrant/project/web-project/node_modules/babel-preset-es2015/node_modules/babel-plugin-transform-es2015-block-sc
oping/node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/

然后我尝试ls,结果是这样的:

node_modules/babel-traverse/node_modules/babel-code-frame/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex$ ls
ls: cannot access index.js: No such file or directory
ls: cannot access license: No such file or directory
ls: cannot access package.json: No such file or directory
ls: cannot access readme.md: No such file or directory
index.js  license  package.json  readme.md

有人可以帮我解决这个问题吗?

谢谢,

2 个答案:

答案 0 :(得分:1)

当我的docker容器的主机几乎没有磁盘空间时,我遇到了同样的错误。抓了我的头,尝试了一堆不同的东西,但是在我完全没有磁盘空间之前没有得到更多的信息,然后它让我增加了可用空间并为我解决了这个问题。

答案 1 :(得分:0)

我使用rsync解决了这个问题(您可以在此处查看文档https://docs.vagrantup.com/v2/synced-folders/rsync.html并且不要忘记启动它同步守护程序https://docs.vagrantup.com/v2/cli/rsync-auto.html)。

这是mya sync文件夹配置:

config.vm.synced_folder "./project/web-project", "/web-project", type: "rsync", rsync__exclude: ".git/", rsync__args: ["--verbose", "--rsync-path='sudo rsync'", "--archive", "--delete", "-z"]

您可以使用以下方式手动启动rsync:

vagrant.exe rsync-auto