LoginSignup
5
3

More than 5 years have passed since last update.

Windows版のvagrantでproviderをvirtualboxにした場合、共有フォルダ下にシンボリックリンクが張れない場合の対処方法

Last updated at Posted at 2017-10-14

問題

Windows版のvagrantでproviderをvirtualboxにした場合、共有フォルダにはシンボリックリンクを作成することができません。そのため、npmやbundler、composer等でパッケージを導入する際、シンボリックリンクを作成するようなパッケージが依存関係に含まれていると導入できずに困るケースがあります。これについては、

など、いくつか解決方法があるようですが、プラグインの導入が必要だったり、Windowsの管理者権限での操作が必要だったりちょっと面倒だなと感じていました。

mount --bindを使った解決方法

最初に挙げたリンク先のコメントで

こちらの記事を知ったのですが、この方法をベースにVagrantfileの記述のみで共有フォルダの下にゲストマシンの特定ディレクトリをマウントすることができます。

設定例

共有フォルダ:
/home/vagrant/webroot

のnode_modules以下をゲストマシンの/home/vagrant/mount_point/node_modulesにマウントする場合、以下のようにVagrantfileを編集します。

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # ..中略.. #
  config.vm.synced_folder "./", "/home/vagrant/webroot"
  config.vm.provision :shell,
    inline: "mkdir -p /home/vagrant/mount_point/node_modules"
  config.vm.provision :shell,
    inline: "mount --bind /home/vagrant/mount_point/node_modules /home/vagrant/webroot/node_modules",
    run: "always"
  # 実際のprovisonはmountの後に記述します
  # ..中略.. #
end

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3