CF set-env没有重新开始

时间:2018-04-17 06:18:11

标签: cloudfoundry

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

2 个答案:

答案 0 :(得分:1)

修改

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

相比之下,当您执行cf restart my-app时,它会接受它。抱歉混乱!

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

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

只有变量与buildpack相关时,才需要重新设置。

答案 1 :(得分:1)

通常,如果实例崩溃(比如应用程序内存不足)并由Diego(实际运行容器实例的运行时)重新启动,则重新启动的实例仍将具有最初“期望”的环境变量(创建)与。

如果您明确地cf restartcf stop && cf start该应用,它将获取需要重新启动的新环境变量。

正如上述用户152468所述,如果在暂存过程中使用了环境变量,您需要cf restage该应用才能使其在功能上生效。

边缘案例场景

如果Diego运行时因某些灾难性原因而消失/丢失数据,Cloud Controller将重新同步它并重新创建要运行的应用程序。在这种情况下,行为类似于cf restart,应用程序将获取新的环境变量。这绝对不常见,但也会被视为“崩溃”情景。