CF set-env 无需重新启动

CF set-env without restage

假设我有一个包含两个实例的应用程序。 我会更改环境变量 (cf set-env) 并且不执行 cf restage。 最终,两个实例之一会崩溃并重新启动。它会采用新环境变量还是旧环境变量?

编辑:

看完下面tcdowney的回答后,我试了一下。 tcdowney 是对的。当应用程序因崩溃而重新启动时,它不会获取新的环境变量,因此您的两个应用程序实例将共享相同的环境。

相比之下,当您执行 cf restart my-app 时,它会拾取它。抱歉造成混淆!

============================================= ===========

它将采用环境变量的新值。看这里:https://docs.run.pivotal.io/devguide/deploy-apps/start-restart-restage.html

仅当变量与构建包相关时,您才需要重新暂存。

一般来说,如果实例崩溃(比如应用程序内存不足)并由 Diego 重新启动(实际上 运行 容器实例的运行时),重新启动的实例仍将具有它的环境变量最初是 "desired"(创建)与。

如果您明确 cf restartcf stop && cf start 应用程序,它将获取需要重新暂存的新环境变量。

正如 user152468 上面所说,如果在暂存过程中使用了环境变量,您需要cf restage应用程序才能使它们在功能上生效。

边缘案例场景

如果 Diego 运行时由于某些灾难性原因进入 away/loses 数据,云控制器将重新同步它并重新创建本应成为 运行 的应用程序。在这种情况下,行为类似于 cf restart,应用程序将获取新的环境变量。这绝对不常见,但也算作 "crash" 场景。