一旦调用 cf bind-service 命令,VCAP_SERVICES 中的条目似乎就会被添加。如果是这种情况,为什么需要重新启动
3 回答
绑定新服务时,重启应用是不够的。你必须这样restage
做。
重新暂存您的应用程序会停止您的应用程序并重新暂存它,方法是编译一个新的 Droplet 并启动它。
通过启动、重新启动和重新启动应用程序了解更多详细信息。
还可以通过如何暂存应用程序来了解暂存生命周期,如何创建和存储液滴。
当您将服务绑定到以下应用程序时,会更新 VCAP_SERVICES 字段。当您重新启动应用程序时,液滴不是新创建的。因此,您需要重新启动应用程序。Restage 会重新创建您的 Droplet 并将其存储在 Blobstore 中。结果,变化得到反映。
VCAP_SERVICES
操作系统环境变量是在应用程序启动时设置的。一旦进程启动,环境变量的值就无法更改。这就是为什么在执行cf bind-service
完应用程序后需要重新启动才能看到的新值VCAP_SERVICES
当您cf push
执行构建包时,一些构建包会检查哪些服务已绑定到应用程序,并可能对服务的存在做出反应。例如,如果您已将 newrelic 服务绑定到应用程序,那么 buildpack 会将 newrelic 代理安装到由 cf push 创建的 dropplet 中。这就是为什么对于后续cf bind-service
操作,您应该cf restage
重新运行 buildpack 并通过修改 buildpack 生成的 droplet 给它一个机会对新绑定的服务的存在做出反应。