【问题标题】:How to start already-provisioned Vagrant box without losing data如何在不丢失数据的情况下启动已经配置好的 Vagrant box
【发布时间】:2016-11-23 19:33:35
【问题描述】:

每当我尝试在没有--provision 标志的情况下使用vagrant up(在Mac OSX 上)启动我的vagrant box 时,我都会收到此错误:

==> 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 box,但我无法访问网络服务器。

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

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

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

编辑:link to vagrantfile

【问题讨论】:

  • 你能分享你的流浪文件吗?
  • 你能把vagrant up的所有输出都贴出来吗?我认为这只是一个通知。 vagrantfile 有一个配置器设置,并且这个虚拟机已经配置好了。
  • 出于这个原因,我不喜欢从供应商启动服务。供应商应该创建一个在启动时启动的服务。

标签: ruby-on-rails macos vagrant


【解决方案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
  )

【讨论】:

  • 谢谢!将此添加到Vagrantfile(紧接在end 之前)有效。它以vagrant up 启动并保持我现有的用户数据库完好无损。
  • 就我而言,我还必须重新启动系统/机器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
  • 2021-08-19
  • 2017-07-31
  • 2021-09-21
  • 2017-04-07
  • 2019-04-25
  • 1970-01-01
相关资源
最近更新 更多