Procfile启动进程在自己的工作目录中

Joh*_*Doe 18 foreman procfile

我有这个简单的Procfile

web: myapp
Run Code Online (Sandbox Code Playgroud)

myapp在路径中,但进程主目录应为./directory/.如何在Procfile中指定要启动进程的位置?

https://github.com/ddollar/foreman/pull/101没有帮助,因为它假设,这个工作目录对于Procfile指定的每个进程应该是相同的

Joh*_*Doe 39

外壳就是答案.这很简单

web: sh -c 'cd ./directory/ && exec appname'
Run Code Online (Sandbox Code Playgroud)

  • 我记得问题是第一个'cd'将在它自己的进程中启动,在它完成之后,它改变的目录将被恢复到foreman运行的地方.使用'sh'会使它自己的环境出现,之后引号中的所有内容都会继承这个环境. (9认同)
  • 你为什么需要sh -c,引号和点和斜线?你不能这样做:web:cd目录&& exec appname? (2认同)

iGb*_*nam 6

您可以将一组Shell命令链接在一起。使用当前版本的Foreman,您无需像@JohnDoe的答案一样将其包装在shell命令中。

web: cd server_dir && start web_service
clk: cd clock_tower && start timers
Run Code Online (Sandbox Code Playgroud)

这些将从它们各自的文件夹中启动必要的过程并独立跟踪它们。