2

我对基于 CloudFoundry 的应用程序有疑问。到目前为止,我们在任何环境中都有随机路由(通过端口)。现在要求在每个环境(dev、test、prod)上始终使用相同的端口,这样收件人就不必每次都更改 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.

谢谢。

4

1 回答 1

2

您可以在manifest.yml文件中为路由设置静态端口。在routes块中,添加带有端口的路由。

前任:

---
  ...
  routes:
  - route: tcp-example.com:1234

https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html#routes

如果您在所有环境中都有相同的端口,则可以在此处停止。如果您需要为每个环境使用不同的固定端口,请继续阅读。

您不能在manifest.yml文件中执行任何形式的逻辑或分支,但您可以使用清单变量。

前任:

---
  ...
  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/with/vars

更进一步,在使用 时--var port=,您可以使用 shell 环境变量或 shell 逻辑来控制使用的端口值,或者您可以在--vars-file每个环境中引用不同的文件。它最终变得非常灵活。

于 2021-09-15T12:50:26.513 回答