Не удается получить доступ к файлам внутри папки Vagrant Sync

Я запускаю док-контейнеры внутри Vagrant VM (с 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. Почти все файлы и папки внутри папки 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'

Далее продолжаю выявлять проблему, зайдя на vagrant по ssh:

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

И теперь я нахожусь внутри бродячей виртуальной машины и захожу в папку, в которой файлы внутри не могут быть найдены:

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

Кто-нибудь может помочь мне решить эту проблему?

Спасибо,


person Yusuf Ibrahim    schedule 01.12.2015    source источник
comment
Это может быть проблемой с длинными путями в Windows и VirtualBox.   -  person yjwong    schedule 01.12.2015
comment
проблема решена с помощью docs.vagrantup.com/v2/synced-folders/rsync .html   -  person Yusuf Ibrahim    schedule 02.12.2015


Ответы (2)


Я получил ту же ошибку, когда на хосте для моего док-контейнера почти не осталось места на диске. Почесал голову и попробовал кучу разных вещей, но не получил больше информации, пока у меня полностью не закончилось место на диске, тогда это заставило меня увеличить доступное пространство, и это решило проблему для меня.

person wonderfulthunk    schedule 23.03.2018

Я решил эту проблему с помощью rsync (вы можете увидеть документ здесь https://docs.vagrantup.com/v2/synced-folders/rsync.html и не забудьте запустить демон синхронизации https://docs.vagrantup.com/v2/cli/rsync-auto.html).

вот конфигурация моей папки синхронизации:

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
person Yusuf Ibrahim    schedule 02.12.2015