如何启动已经配置的Vagrant盒而不会丢失数据

时间:2016-11-23 19:33:36

标签: ruby-on-rails macos vagrant

每当我尝试使用vagrant up(在Mac OSX上)启动我的流浪盒而没有--provision标志时,我会收到此错误:

==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

我可以ssh进入流浪盒,但我无法访问网络服务器。

该框启动,我可以在运行vagrant up --provision时访问服务器,但会删除每个会话中的所有数据。

输入vagrant halt并尝试使用vagrant up再次启动此框后,会出现此问题。在vagrant up之后输入vagrant destroy时不会发生这种情况,但destroy也会删除所有数据库等,所以我想要另一个选项。有没有人有建议?

我正在使用具有自己的Vagrantfile的现有仓库。该项目使用Ruby on Rails和Sqlite3。

修改:link to vagrantfile

1 个答案:

答案 0 :(得分:1)

问题是你的配置启动了rails命令,但是在它没有持久化之后所以当你重启VM时这个命令没有运行而且rails没有启动,你可以在cron作业中添加命令以确保它启动自动。

但为了简单起见,您可以在每次启动VM时添加以下配置程序来启动rails

  config.vm.provision :shell, privileged: false, run: "always", inline: %(
    cd /vagrant/
    bundle exec unicorn_rails -D
    sudo service nginx restart
  )