2012-11-08 12 views

risposta

36

Il guscio è la risposta. E 'semplice come

web: sh -c 'cd ./directory/ && exec appname' 
+0

Perché hai bisogno di sh -c, le virgolette e il punto e le barre? Non puoi semplicemente fare: web: cd directory && exec appname? – ma11hew28

+3

Ricordo che il problema era che il primo 'cd' sarebbe stato avviato nel suo stesso processo e, una volta completato, la directory in cui è stata modificata tornerà a essere in Foreman. L'uso di 'sh' sputerà il proprio ambiente e ogni cosa tra virgolette erediterà questo ambiente. – JohnDoe

2

Una risposta a "Come è possibile specificare nel Procfile in cui il processo è quello di essere avviato?"

È possibile indicare a Foreman dove la directory radice dell'applicazione indica che questo non deve essere lo stesso del Procfile.

È possibile avviare Foreman con l'opzione -d (potrebbe essere necessario utilizzare anche -f nel Procfile).

$ foreman start -d ./directory 

http://ddollar.github.io/foreman/

+2

Sì, ma cosa succede se diversi processi elencati nello stesso Procfile hanno directory radice differenti? – ma11hew28

+0

@mattdipasquale quindi ha un Procfile nella directory principale con linee diverse come segue: 'service1: foreman start -d ./directory1\n service2: foreman start -d./Directory2' –

2

È possibile concatenare una serie di comandi shell insieme. Con la versione corrente di Foreman, non è necessario avvolgerlo in un comando di shell come nella risposta di @ JohnDoe.

web: cd server_dir && start web_service 
clk: cd clock_tower && start timers 

Questi avvieranno i processi necessari dalle rispettive cartelle e li seguiranno in modo indipendente.

Problemi correlati