我有这个简单的ProcfileProcfile启动进程在自己的工作目录
web: myapp
的myapp是路径,但过程的主目录应该./directory/。我如何在Procfile中指定进程的启动位置?
https://github.com/ddollar/foreman/pull/101没有帮助,因为它假定,这个工作目录应该是由Procfile
我有这个简单的ProcfileProcfile启动进程在自己的工作目录
web: myapp
的myapp是路径,但过程的主目录应该./directory/。我如何在Procfile中指定进程的启动位置?
https://github.com/ddollar/foreman/pull/101没有帮助,因为它假定,这个工作目录应该是由Procfile
壳指定的每个过程,同样是答案。这很简单
web: sh -c 'cd ./directory/ && exec appname'
答案“我如何在Procfile中指定进程的启动位置?”
你可以告诉工头在应用程序根目录意味着这并不一定是相同的地方Procfile。
您可以使用-d
选项启动Foreman(也可能需要使用-f
来处理Procfile)。
$ foreman start -d ./directory
是的,但是如果在同一个Procfile中列出的不同进程具有不同的根目录呢?然后 – ma11hew28
@mattdipasquale具有Procfile与不同行如下主目录: '服务1:工头开始-d ./directory1\n服务2:工头启动-d/directory2' –
您可以链的一组壳的命令一起。使用当前版本的Foreman,您不需要像在@ JohnDoe的答案中一样将其封装在shell命令中。
web: cd server_dir && start web_service
clk: cd clock_tower && start timers
这些将从它们各自的文件夹开始必要的过程并独立跟踪它们。
为什么你需要sh -c,引号和点和斜杠?难道你不能这样做:web:cd directory && exec appname? – ma11hew28
我记得问题是第一个'cd'将会在它自己的进程中启动,并且在它完成之后,它所改变的目录将会恢复到工头正在运行的位置。使用'sh'会将它自己的环境拖垮,并且之后引号中的所有内容都将继承此环境。 – JohnDoe