Vagrant - VM无法跟踪virtualbox synced_folder中的host-symlink

时间:2018-03-16 13:58:56

标签: vagrant virtualbox provisioning vagrantfile

我建立了一个流浪汉机器来维护我的旧项目。我使用VirtualBox作为提供程序并创建了一个synced_folder来将项目发布到vm。

资产数量巨大(~40GByte),所以我不想把它保留在我的ssd上。所以我将这些资产移动到硬盘并从我的项目文件夹中创建了一个指向hdd的符号链接。所有这些都发生在主机系统上。

我的问题是,当我进入我的流浪汉机器并检查assets-folder时,我可以看到一个破损的符号链接。我希望我的虚拟机能够遵循这条道路。

文件夹结构(重要的部分)如下所示:

root/
|--src/
|--public/
|--|--assets -> /media/hdd

正如您所见,/ root / public / assets指向我的hdd mount。

我的synced_folder设置为

Vagrant.configure("2") do |config|
    # skipped lines
    # skipped lines
    config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
    # skipped lines
    # skipped lines
end

现在我不知道如何配置synced_folder以遵循主机上的路径。

我想过另外一行像

    config.vm.synced_folder "/media/hdd", "/vagrant/public/assets", type: "virtualbox"

但我不是唯一使用此设置的人,所以我想用某种选项来解决它,例如:

config.vm.synced_folder ".", "/vagrant", type: "virtualbox", options: ["optionIDontKnowAbout", "1"]

到目前为止我尝试了什么:

config.vm.provider "virtualbox" do |vb|
    # should allow symlinks in synced folders
    vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end

但这没有帮助。

提前致谢

1 个答案:

答案 0 :(得分:0)

目前我使用以下解决方法。它没有回答我最初的问题,所以我不会删除它:

    getClientById(clientId): Observable<Client>{
    let params = new HttpParams().set('clientId', clientId);
    return this.httpClient.get<Client>('http://localhost:3000/clients/getClientById', { responseType: 'json', params: params });
  }