2012-11-08 5 views

Antwort

36

die Schale procfile angegeben sein sollte, ist die Antwort. Es ist so einfach wie

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

Warum brauchen Sie SH-C, die Anführungszeichen und die Punkt & Schrägstriche? Kannst du das nicht einfach machen? Web: cd verzeichnis && exec appname? – ma11hew28

+3

Ich erinnere mich das Problem war, dass das erste 'cd' in einem eigenen Prozess gestartet wird und nachdem es abgeschlossen ist, wird das Verzeichnis, zu dem es geändert wurde, zurück zu dem Foreman ausgeführt. Mit 'sh' wird die eigene Umgebung gesponsert und alles in Anführungszeichen wird diese Umgebung erben. – JohnDoe

2

Eine Antwort auf „Wie kann ich in der procfile angeben, in dem der Prozess gestartet werden soll?“

Sie können Foreman angeben, wo das Anwendungsstammverzeichnis bedeutet, dass dies nicht derselbe Ort wie die Procfile sein muss.

Sie können Foreman mit der Option -d starten (möglicherweise müssen Sie auch -f für das Procfile verwenden).

$ foreman start -d ./directory 

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

+2

Ja, aber was ist, wenn verschiedene Prozesse, die in derselben Procfile aufgelistet sind, unterschiedliche Wurzelverzeichnisse haben? – ma11hew28

+0

@mattdipasquale haben dann eine Procfile im Hauptverzeichnis mit verschiedenen Zeilen wie folgt: 'service1: Vorarbeiter Start -d ./directory1\n Service2: Vorarbeiter Start-d./Directory2' –

2

können Sie Kette eine Reihe von Shell-Befehlen zusammen. Mit der aktuellen Version von Foreman müssen Sie das nicht in einen Shell-Befehl wie in @ JohnDoe's Antwort einfügen.

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

Diese würden die notwendigen Prozesse von ihren jeweiligen Ordnern starten und sie unabhängig verfolgen.