一旦调用cf bind-service命令,VCAP_SERVICES中的条目似乎就会被添加。如果是这种情况,为什么需要重新启动
答案 0 :(得分:2)
绑定新服务时,重新启动应用程序是不够的。你必须restage
它。
重新启动应用程序会停止您的应用程序,并通过编译新的Droplet并启动它来重新启动它。
通过Starting, Restarting, and Restaging Applications了解更多详情。
还要通过How Applications are staged了解分段生命周期,如何创建和存储Droplet。
答案 1 :(得分:1)
应用程序启动时设置VCAP_SERVICES
OS环境变量。启动进程后,无法更改环境变量的值。这就是为什么在执行cf bind-service
之后需要重新启动应用程序以查看VCAP_SERVICES
的新值
执行cf push
时,buildpack会执行,而某些构建包会检查哪些服务已绑定到应用程序,并可能对服务的存在作出反应。例如,如果您已将newrelic服务绑定到应用程序,则buildpack会将newrelic代理安装到cf push创建的dropplet中。这就是为什么在cf bind-service
操作之后你应该做cf restage
来重新运行buildpack,并通过修改buildpack生成的droplet让它有机会对新绑定服务的存在作出反应。
答案 2 :(得分:1)
将服务绑定到以下应用程序时,将更新VCAP_SERVICES字段。重新启动应用程序时,不会新创建Droplet。因此,您需要重新启动应用程序。 Restaging重新创建Droplet并将其存储在Blobstore中。结果,这些变化得到了反映。