如何通过CloudFoundry manifest实现类似Kubernetes的文件挂载功能?
Cloud Foundry 挂载feature-flags文件到/dist目录实现方案
Cloud Foundry 没有原生的单文件挂载能力,可通过「manifest环境变量+启动预生成文件」的方式实现和Kubernetes挂载ConfigMap等价的效果,具体实现如下:
步骤1:配置manifest.yml
你可以把所有feature flags的键值对统一加前缀定义在manifest的env字段,再通过启动命令自动生成合法JSON文件到/dist目录:
--- applications: - name: 你的React应用名称 memory: 256M buildpacks: # 若你使用非静态文件buildpack可替换为对应buildpack - staticfile_buildpack env: # 所有feature flag统一加FEATURE_FLAG_前缀方便识别 FEATURE_FLAG_NEW_UI: "true" FEATURE_FLAG_PAYMENT_MODULE: "false" FEATURE_FLAG_APIGEE_ROUTE: "https://你的Apigee层地址" command: | # 启动前先在dist目录生成feature-flags.json echo '{' > /home/vcap/app/dist/feature-flags.json env | grep ^FEATURE_FLAG_ | sed 's/FEATURE_FLAG_//' | awk -F= '{print "\""$1"\":\""$2"\","}' >> /home/vcap/app/dist/feature-flags.json # 补全JSON格式,删除最后一个多余逗号 sed -i '$ s/,$//' /home/vcap/app/dist/feature-flags.json echo '}' >> /home/vcap/app/dist/feature-flags.json # 执行buildpack默认启动命令,非staticfile_buildpack可替换为对应启动指令 $HOME/boot.sh
步骤2:验证访问
- 部署完成后,React代码可直接通过
fetch('/feature-flags.json')读取配置,静态资源请求无需经过Apigee层处理 - 调整feature flag仅需修改manifest的env字段后重新推送应用即可,不需要重新打包React代码
可选方案:直接挂载本地已有的feature-flags.json
如果你本地已经有写好的feature-flags.json文件,可把文件放在项目根目录,直接在manifest指定启动时复制到dist目录即可:
command: cp /home/vcap/app/feature-flags.json /home/vcap/app/dist/ && $HOME/boot.sh
内容的提问来源于stack exchange,提问作者xbmono
相关产品推荐
相关产品推荐

