2012-11-08 18 views
17

Tôi có đơn giản Procfile nàyProcfile bắt đầu quá trình trong thư mục làm việc riêng của họ

web: myapp 

myapp là trong đường dẫn, nhưng thư mục trình nhà nên được ./directory/. Làm thế nào tôi có thể chỉ định trong Procfile nơi quá trình này sẽ được bắt đầu?

https://github.com/ddollar/foreman/pull/101 không giúp bởi vì nó giả định, rằng thư mục làm việc này nên giống nhau cho tất cả các quá trình theo quy định của Procfile

Trả lời

36

Vỏ là câu trả lời. Nó đơn giản như

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

Tại sao bạn cần sh -c, dấu ngoặc kép và dấu chấm & dấu gạch chéo? Bạn không thể làm: web: cd directory && exec appname? – ma11hew28

+3

Tôi nhớ vấn đề là 'cd' đầu tiên sẽ được bắt đầu trong quá trình của riêng nó và sau khi nó hoàn thành, thư mục mà nó thay đổi sẽ được hoàn nguyên về nơi người quản lý đang chạy. Sử dụng 'sh' sẽ kéo dài môi trường của chính nó và mọi thứ trong dấu ngoặc kép sau đó sẽ kế thừa môi trường này. – JohnDoe

2

Câu trả lời cho "Làm cách nào tôi có thể chỉ định trong Procfile nơi bắt đầu quá trình?"

Bạn có thể thông báo cho Foreman biết thư mục gốc của ứng dụng có nghĩa là thư mục này không phải là nơi giống như Procfile.

Bạn có thể bắt đầu Foreman với tùy chọn -d (có thể cần phải sử dụng -f cho Procfile).

$ foreman start -d ./directory 

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

+2

Vâng, nhưng nếu các quy trình khác nhau được liệt kê trong cùng một Procfile có các thư mục gốc khác nhau thì sao? – ma11hew28

+0

@mattdipasquale sau đó có một Procfile trong thư mục chính với các dòng khác nhau như sau: 'service1: foreman start -d ./directory1\n service2: foreman start -d./Directory2' –

2

Bạn có thể chuỗi một bộ vỏ lệnh với nhau. Với phiên bản hiện tại của Foreman, bạn không cần phải bọc nó trong một lệnh shell như trong câu trả lời của @ JohnDoe.

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

Điều này sẽ bắt đầu các quy trình cần thiết từ các thư mục tương ứng và theo dõi chúng một cách độc lập.

Các vấn đề liên quan