Cloud Foundry:如何重新映射 Docker 图像中的暴露端口?

Cloud Foundry: How to remap an exposed port in Docker image?

我想 运行 RabbitMQ 服务使用我组织的 Cloud Foundry 服务。我检查了 RabbitMQ docker 图像,发现暴露了以下端口:

 "ExposedPorts": {
                "25672/tcp": {},
                "4369/tcp": {},
                "5671/tcp": {},
                "5672/tcp": {}
            },

我通过在 Cloud Foundry 中安装它来启动应用程序,如下所示:cf push -o rabbitmq RabbitMQ -u process

应用已安装并启动。但是,它正在侦听端口 5672。CF 服务只允许我拥有 10000 和 10999 之间的端口。所以我进入 CF 门户,删除 HTTP 路由,并在端口 10123 上为 rabbitmq 应用程序创建一个新的 TCP 路由。

如何使用 CF CLI 将端口 10123(面向外部)映射到端口 5672(RabbitMQ,面向内部)?

有将具有特定外部端口的路由映射到特定内部应用程序端口的功能。它在此处的文档中进行了描述。

https://docs.cloudfoundry.org/devguide/custom-ports.html#procedure

目前,cf cli 不直接支持该功能,因此您需要使用 cf curl 手动发送一些请求。

大体流程是这样的

  1. 获取应用程序的 GUID。
  2. 为您的应用配置端口列表,cf curl /v2/apps/APP-GUID -X PUT -d '{"ports": [25672, 4369, 5671, 5672]}'
  3. 使用 cf map-route my-app example.com --port 10123 将 TCP 路由映射到您的应用程序。
  4. 获取您的 TCP 路由的路由 GUID。 运行 cf curl /v2/routes?q=host:example.com.
  5. cf curl /v2/route_mappings -X POST -d '{"app_guid": "APP-GUID from #1", "route_guid": "ROUTE-GUID from #4", "app_port": 5672}'
  6. 更新路由映射
  7. 可以选择对其他端口重复 3-5。