我对基于 CloudFoundry 的应用程序有疑问。 到目前为止,我们在任何环境中都有随机路由(通过端口)。现在有一个要求,即在每个环境(开发、测试、生产)上始终使用相同的端口,以便接收者不必每次都更改 URL。到目前为止,我们在每次部署后通过控制台通过“cf map-route ...”执行此操作。
有什么方法可以通过 config/yaml 文件静态地执行此操作吗? 是否可以在 YAML 中指定环境特定变量?示例:
- name: odata_kbs_sv-app
type: html5
path: app
parameters:
port: ~{specificPort}
[...]
when space = 'DEV' then specificPort = 55555 etc.
谢谢。
最佳答案
您可以在 manifest.yml
文件中为路由设置静态端口。在 routes
block 中,添加带有端口的路由。
例如:
---
...
routes:
- route: tcp-example.com:1234
https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html#routes
如果您的所有环境都具有相同的端口,则可以到此为止。如果您需要为每个环境使用不同的固定端口,请继续阅读。
您不能在 manifest.yml
文件中执行任何形式的逻辑或分支,但您可以使用 list 变量。
例如:
---
...
routes:
- route: tcp-example.com:((port))
https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html#variable-substitution
当您cf Push
时,您需要设置--var port=8080
或者需要设置--vars-file=file/与/vars
。
更进一步,当使用 --var port=
时,您可以使用 shell 环境变量或 shell 逻辑来控制使用的端口值,或者您可以引用不同的 - -vars-file
每个环境的文件。它最终变得非常灵活。
关于cloud-foundry - CloudFoundry - 基于空间名称的条件环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69179119/