在 Pivotal Cloud Foundry 中,有没有办法让每个 space 得到 SPRING_PROFILES_ACTIVE?
Within Pivitoal Cloud Foundary is there a way to set SPRING_PROFILES_ACTIVE per each space?
对于使用 Pivotal Cloud Foundry (PCF) 的组织内的每个 space,有没有办法为每个 space 设置 SPRING_PROFILES_ACTIVE?
- space1:SPRING_PROFILES_ACTIVE:发展
- space2:SPRING_PROFILES_ACTIVE:性能
- space3:SPRING_PROFILES_ACTIVE:生产
- 等...
谢谢,
布莱恩
您在 Cloud Foundry 上设置 Spring 配置文件的主要方式是通过环境变量。
Cloud Foundry 不提供为每个组织或 space 设置环境变量组的方法。您只能设置适用于所有暂存或所有 运行ning 应用程序的暂存和 运行ning 环境变量组。这是在应用程序上设置环境变量的标准工具的补充。
我想您也许可以让它工作,但这需要一些努力。这是想法。
创建自定义构建包(不要惊慌,这并不难)。 buildpack 的唯一职责是创建一个包含 export SPRING_PROFILES_ACTIVE=<some-profile>
.
的 .profile.d/
脚本(只是一个常规的 Bash 脚本)
任何 buildpack 都可以创建 .profile.d/
主要用于配置环境变量的脚本。这些脚本在任何应用程序启动之前由环境自动获取。因此,如果 buildpack 在此处设置 SPRING_PROFILES_ACTIVE
,它将对您的应用可用并生效。
https://docs.cloudfoundry.org/buildpacks/custom.html#contract
您只需要创建下面 link 中定义的 bin/supply
和 bin/detect
脚本。 bin/supply
是您放置创建 .profile.d/
脚本的逻辑的地方,bin/detect
可以像 exit 0
一样简单,它只会告诉 运行总是。
https://docs.cloudfoundry.org/buildpacks/understand-buildpacks.html#buildpack-scripts
您的自定义 buildpack 可以像使用硬编码配置文件一样简单,也可以很花哨并查看包含 space 名称的 VCAP_APPLICATION
环境。
例如:echo $VCAP_APPLICATION | jq .space_name
.
buildpack 然后可以应用逻辑来设置给定 space 名称的正确配置文件。我不认为组织名称可用于 staging/runtime 的应用程序,至少不能通过环境变量使用,因此基于此应用逻辑会更难。
最后一步是使用 CF 的多构建包支持。您的自定义 buildpack 将是一个供应 buildpack,因此它将是第一个,然后您将列出实际的 buildpack,以便在您推送应用程序时使用第二个。
例如:cf push -b https://github.com/your-profile/your-custom-buildpack -b java_buildpack your-cool-app
.
https://docs.cloudfoundry.org/buildpacks/use-multiple-buildpacks.html
希望对您有所帮助!
对于使用 Pivotal Cloud Foundry (PCF) 的组织内的每个 space,有没有办法为每个 space 设置 SPRING_PROFILES_ACTIVE?
- space1:SPRING_PROFILES_ACTIVE:发展
- space2:SPRING_PROFILES_ACTIVE:性能
- space3:SPRING_PROFILES_ACTIVE:生产
- 等...
谢谢, 布莱恩
您在 Cloud Foundry 上设置 Spring 配置文件的主要方式是通过环境变量。
Cloud Foundry 不提供为每个组织或 space 设置环境变量组的方法。您只能设置适用于所有暂存或所有 运行ning 应用程序的暂存和 运行ning 环境变量组。这是在应用程序上设置环境变量的标准工具的补充。
我想您也许可以让它工作,但这需要一些努力。这是想法。
创建自定义构建包(不要惊慌,这并不难)。 buildpack 的唯一职责是创建一个包含
的export SPRING_PROFILES_ACTIVE=<some-profile>
..profile.d/
脚本(只是一个常规的 Bash 脚本)任何 buildpack 都可以创建
.profile.d/
主要用于配置环境变量的脚本。这些脚本在任何应用程序启动之前由环境自动获取。因此,如果 buildpack 在此处设置SPRING_PROFILES_ACTIVE
,它将对您的应用可用并生效。https://docs.cloudfoundry.org/buildpacks/custom.html#contract
您只需要创建下面 link 中定义的
bin/supply
和bin/detect
脚本。bin/supply
是您放置创建.profile.d/
脚本的逻辑的地方,bin/detect
可以像exit 0
一样简单,它只会告诉 运行总是。https://docs.cloudfoundry.org/buildpacks/understand-buildpacks.html#buildpack-scripts
您的自定义 buildpack 可以像使用硬编码配置文件一样简单,也可以很花哨并查看包含 space 名称的
VCAP_APPLICATION
环境。例如:
echo $VCAP_APPLICATION | jq .space_name
.buildpack 然后可以应用逻辑来设置给定 space 名称的正确配置文件。我不认为组织名称可用于 staging/runtime 的应用程序,至少不能通过环境变量使用,因此基于此应用逻辑会更难。
最后一步是使用 CF 的多构建包支持。您的自定义 buildpack 将是一个供应 buildpack,因此它将是第一个,然后您将列出实际的 buildpack,以便在您推送应用程序时使用第二个。
例如:
cf push -b https://github.com/your-profile/your-custom-buildpack -b java_buildpack your-cool-app
.https://docs.cloudfoundry.org/buildpacks/use-multiple-buildpacks.html
希望对您有所帮助!