Có thể đặt biến môi trường Heroku mà không cần khởi động lại ứng dụng không?Đặt biến môi trường Heroku mà không cần khởi động lại ứng dụng
Ứng dụng của tôi kết nối với các dịch vụ trực tuyến khác nhau qua OAuth2. Đối với mỗi dịch vụ tôi kết nối, tôi cần đặt một ID và mật khẩu OAuth2. Để giữ các biến cấu hình bên ngoài mã của tôi, tôi đang sử dụng các biến môi trường và đọc chúng ở trên process.env
(node.js).
Mỗi khi tôi thêm một dịch vụ mới vào ứng dụng của mình, tôi cần thêm các biến môi trường tương ứng cho ID và bí mật. Tôi cần phải làm điều này trước khi đẩy mã mới nhất, để khi ứng dụng tiếp theo bắt đầu với kết nối dịch vụ mới, ID OAuth2 và biến bí mật có sẵn.
Hiện tại công việc của tôi là như sau:
- Đặt biến môi trường bằng cách sử dụng toolbelt Heroku:
heroku config:set <SERVICE>_ID=foo <SERVICE>_SECRET=bar
- Đẩy mã mới nhất:
git push heroku master
Hiện nay, cả những hoạt động sẽ khởi động lại ứng dụng. Tôi thực sự thích hoạt động đầu tiên không khởi động lại ứng dụng, vì những thay đổi đối với các vars cấu hình này không cần phải có hiệu lực cho đến bước 2). Bằng cách khởi động lại ở bước 1) ứng dụng của tôi sẽ trải nghiệm thời gian ngừng hoạt động không cần thiết.
Vì vậy, có cách nào để ngăn bước 1) khởi động lại ứng dụng không?
Bạn không thể thay đổi biến môi trường cho một quy trình đang chạy. Bạn chỉ có thể thao tác nó từ bên trong ứng dụng. Nhưng nếu bạn cần thay đổi biến môi trường trong khi ứng dụng đang chạy, bạn vẫn đang làm gì đó sai. – poke
Cảm ơn nhận xét, nhưng nếu bạn chú ý, tôi thực sự đang thêm biến môi trường, không thay đổi biến hiện tại. Vì vậy, tôi không nghĩ rằng điều này được tính là 'làm điều gì đó sai'? – fiznool
Bạn đang đặt bí mật dịch vụ sau khi ứng dụng đang chạy. Bí mật dịch vụ là một cấu hình không bao giờ thay đổi trong khi ứng dụng đang chạy. – poke