"cách thức quản đốc" cho hành vi khác nhau trong sản xuất vs phát triển là gì? Đó là chúng tôi muốn người quản đốc bắt đầu một loạt các công cụ trong dev, tuy nhiên trong sản xuất heroku chúng tôi không cần nó để bắt đầu (ví dụ) solr.phát triển quản đốc và sản xuất (đường ray)
Trả lời
Foreman lấy đối số để sử dụng tệp (-d) và đối số khác để chỉ định những gì cần chạy. Nó cũng hỗ trợ tệp .foreman
cho phép các arg đó trở thành mặc định. Xem http://ddollar.github.com/foreman/ để biết thêm thông tin
Tôi tuân theo quy ước;
Procfile
định nghĩa tất cả quá trình.foreman
thiết lập các biến đốc cụ thể
Phát triển:
.env
biến bộ môi trường cho mỗi nhà phát triển.env.example
s giá trị mặc định ETS phát triểnforeman start
bắt đầu tất cả các quá trình
sản xuất:
heroku config
biến bộ môi trườngheroku ps:scale
bật hoặc tắt bất cứ các quy trình cần thiết cho việc sản xuất
Dưới đây là một ví dụ từ một dự án.
Procfile:
web: bundle exec unicorn_rails -p $PORT -c ./config/unicorn.rb
worker: bundle exec rake jobs:work
search: bundle exec rake sunspot:solr:run
.env.example:
# default S3 bucket
S3_KEY=keykeykeykeykeykey
S3_SECRET=secretsecretsecret
S3_BUCKET=myapp-development
.env
# developer's private S3 bucket
S3_KEY=mememememememememe
S3_SECRET=mysecretmysecret
S3_BUCKET=myapp-development
.foreman:
# development port is 3000
port: 3000
Trước đây tôi đã sử dụng Procfile
của môi trường cụ thể, điều này khá đơn giản và hoạt động tốt.
Về cơ bản bạn có Procfile.development
, Procfile.production
, vv Trong mỗi bạn có thể tùy chỉnh procs bạn muốn bắt đầu, sau đó chạy chúng thông qua foreman
như vậy:
foreman start -f Procfile.development
Một cách khác là để tham khảo kịch bản trong Procfile
của bạn, và trong mỗi kịch bản khởi động quá trình thích hợp dựa trên môi trường. The creator of Foreman does this và có an example from his Anvil project your reference.