Ответ 1
Оболочка - это ответ. Это так же просто, как
web: sh -c 'cd ./directory/ && exec appname'
У меня есть этот простой Procfile
web: myapp
myapp находится в пути, но домашний каталог процессов должен быть. /directory/. Как я могу указать в Procfile, где процесс должен быть запущен?
https://github.com/ddollar/foreman/pull/101 не помогает, поскольку предполагает, что этот рабочий каталог должен быть одинаковым для каждого процесса, указанного в Procfile
Оболочка - это ответ. Это так же просто, как
web: sh -c 'cd ./directory/ && exec appname'
Ответ на вопрос "Как я могу указать в файле Procfile, где процесс должен быть запущен?"
Вы можете указать Foreman, где корневой каталог приложения означает, что это не должно быть тем же самым местом, что и файл Procfile.
Вы можете запустить Foreman с опцией -d
(возможно, также нужно использовать -f
в Procfile).
$ foreman start -d ./directory
Вы можете связать набор команд оболочки вместе. В текущей версии Foreman вам не нужно обертывать это в командной строке, как в ответе @JohnDoe.
web: cd server_dir && start web_service
clk: cd clock_tower && start timers
Они будут запускать необходимые процессы из своих соответствующих папок и отслеживать их независимо.