使用 Vagrant 托管 PostgreSQL 数据库时如何找到同步文件夹?

How do I find my synced folder when using Vagrant to host a PostgreSQL database?

根据 the PostgreSQL wiki, I cloned a vagrant file 将 PostgreSQL 预加载到我的硬盘上。

我现在正尝试将它与我一直在编写的 .py 和 .sql 文件结合使用。 Vagrant 文档建议我应该能够 cd 直接进入名为 /vagrant 的文件夹,一旦我完成 vagrant upvagrant ssh 但每当我尝试这样做时,我得到以下错误消息:

-bash: cd: /vagrant: No such file or directory

我假设它在我的 Vagrantfile 里面。 Vagrant 文档说这种行为应该默认发生,但我在额外的行中添加了:

config.vm.synced_folder ".", "/vagrant"

但那没有任何作用。

所以我想知道如何访问我的 /vagrant shared/synced 文件夹。你能帮忙吗?

来自 https://github.com/jackdb/pg-app-dev-vm 的 Vagrantfile 看起来有点旧并且仍然具有版本 1 语法 -

您可以在版本 2 语法部分添加缺少的文件夹,所以 Vagrantfile 就像

# -*- mode: ruby -*-
# vi: set ft=ruby :

$script = <<SCRIPT
echo I am provisioning...
date > /etc/vagrant_provisioned_at
SCRIPT

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: $script
  config.vm.synced_folder  ".", "/vagrant"
end

Vagrant::Config.run do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.box_url = "https://atlas.hashicorp.com/ubuntu/boxes/trusty64"
  config.vm.host_name = "postgresql" 

  config.vm.share_folder "bootstrap", "/mnt/bootstrap", ".", :create => true
  config.vm.provision :shell, :path => "Vagrant-setup/bootstrap.sh"

  # PostgreSQL Server port forwarding
  config.vm.forward_port 5432, 15432
end

更好的方法是使用 version2 语法(syntax1 现在已经过时了几年)- 以下将起作用

# -*- mode: ruby -*-
# vi: set ft=ruby :

$script = <<SCRIPT
echo I am provisioning...
date > /etc/vagrant_provisioned_at
SCRIPT

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: $script

  config.vm.box = "ubuntu/trusty64"
  config.vm.box_url = "https://atlas.hashicorp.com/ubuntu/boxes/trusty64"
  config.vm.host_name = "postgresql" 

  config.vm.synced_folder  ".", "/mnt/bootstrap"

  config.vm.provision :shell, :path => "Vagrant-setup/bootstrap.sh"

  # PostgreSQL Server port forwarding
  config.vm.network "forwarded_port", guest: 5432, host: 15432
end

使用此功能,您无需指定 /vagrant 共享文件夹,默认情况下您会在此处阅读