web-dev-qa-db-fra.com

Comment partager un dossier créé à l'intérieur de vagrant?

J'ai un vagabond VM et j'ai partagé un dossier (mon dépôt de code) de l'hôte (Ubuntu) avec vagabond à l'aide de config.vm.share_folder. J'aimerais faire le contraire avec un dossier que j'ai créé à l'intérieur de la machine vagabonde (un environnement virtuel). J'aimerais le partager avec l'hôte. Comment puis je faire ça?

J'ai essayé d'ajouter ce qui suit au fichier vagrant: config.vm.share_folder "virtualenv", "/home/vagrant/devenv", "../virtualenv" qui pointe respectivement vers l'environnement virtuel sur la machine à vagabond et vers un dossier vide sur l'hôte. Lorsque je vagabonde et que je regarde dans le dossier de l'hôte, j'aimerais voir le contenu de l'env virtuel dans la machine à vagabond, mais le dossier reste vide. Et quand je ssh dans la machine vagabonde et regarde à l'intérieur du dossier env virtuel, il est devenu vide. La désactivation de ce paramètre restaure le contenu du dossier sur la machine vagabonde.

16
Bastian

dossiers partagés VS dossiers synchronisés

Les dossiers partagés ont été renommés en dossiers synchronisés de v1 à v2 (docs). Sous le capot, ils utilisent toujours vboxsf entre l'hôte et l'invité (des problèmes de performances sont connus s'il existe un grand nombre de fichiers/répertoires).

NOTE: Vous devez comprendre que le répertoire de l'hôte est monté dans l'invité via vboxsf,NOTdans le sens inverse.

Dans votre cas d'utilisation, vous pouvez

  1. utilisez le dossier synchronisé pour mapper les dossiers entre l'hôte et l'invité (supposons qu'ils soient tous les deux vides), puis dans l'invité, copiez (rsync est préférable) ou déplacez le projet dans le dossier mappé.
  2. copiez le contenu d'invité vers l'hôte (à l'aide du dossier scp ou rsync) A, puis utilisez le dossier synchronisé pour mapper le dossier A de l'hôte dans l'invité.

Par exemple

# relative path to where Vagrantfile resides
config.vm.synced_folder "virtualenv", "/home/vagrant/devenv"

# absolute path
config.vm.synced_folder "/path/to/virtualenv", "/home/vagrant/devenv"
  1. mappe le répertoire virtualenv dans le répertoire du projet (où réside la Vagrantfile) avec l'invité /home/vagrant/devenv.

  2. chemin absolu

Plus d'informations pour vous aider à comprendre le fonctionnement des dossiers synchronisés =>Dossiers partagés et synchronisés Vagrant

14
Terry Wang

Dans les dossiers partagés et les dossiers synchronisés (voir http://docs.vagrantup.com/v2/synced-folders/ ), les modifications sont à double sens. Le dossier Host et le dossier Vagrant sont toujours synchronisés. En d'autres termes, il est partagé dans les deux sens, vous n'aurez donc rien à faire.

0
rakhim

Vous pouvez créer un dossier partagé dans Vagrant avec:

config.vm.synced_folder "data", "/var/www", :mount_options => ["dmode=777","fmode=666"]

Partager un Mac dans le chemin Ubuntu

config.vm.synced_folder "/Users/Myname/www-vagrant", "/var/www/vagrant",

propriétaire: "www-data", groupe: "www-data"

0
Krucamper