运行 python vagrant up 上的脚本

run python script on vagrant up

我正在尝试 运行 将生成 运行ning python flask 应用程序的 vagranfile。我试过用这个作为最后一个命令来实现这个 - config.vm.provision :shell, :path => "python app.py" 但它导致了以下错误 -

*路径for shell provisioner does not exist on the host system: /Users/*****/code/app-vagrant/python app.py

我知道脚本正试图从主机运行这个命令,我如何让 Vagrant 运行 启动 vagrant 机器上的脚本?

您有 2 个选项来 运行 使用 vagrant shell provisioner 的脚本 您必须传递 inlinepath 参数:

inline (string) - Specifies a shell command inline to execute on the remote machine.

path (string) - Path to a shell script to upload and execute. It can be a script relative to the project Vagrantfile or a remote script (like a gist).

所以当您传递 :path => "python app.py" 时,系统会尝试在您的主机上查找名为 python app.py 的脚本。

使用 inline 参数替换,它将实现您想要的效果

config.vm.provision :shell, :inline => "python app.py"

注意:provisioner 默认是 运行 作为 root 用户,如果你想改变 运行 它作为 vagrant 用户:

config.vm.provision :shell, :inline => "python app.py", :privileged => false

如果你想在机器启动时启动应用程序,你可以这样做:

  1. 将您的 python app code directory 移动到 Vagrantfile 的目录

  2. 像这样配置 Vagrantfile:

    config.vm.provision "shell", inline: <<-SHELL
      python /vagrant/<your python app code directory>/app.py
    SHELL