在 vagrant up 时运行 Python 脚本

4
我试图运行一个vagranfile文件,以启动一个Python Flask应用程序。我尝试使用以下命令来实现此目的: 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个回答

6
您有两个选项来运行脚本,使用Vagrant Shell Provisioner,您必须传递inlinepath参数:

inline(字符串)-指定要在远程计算机上执行的Shell命令。

path(字符串)-上传和执行Shell脚本的路径。它可以是相对于项目Vagrantfile的脚本,也可以是远程脚本(如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

如果你想让应用程序在计算机启动时自动运行,你可以这样做:

  1. move your python app code directory to the Vagrantfile's directory

  2. Config the Vagrantfile like that:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接