我有一个打开两个端口的CF应用程序。 AFAIK CF只能为其中一个创建路由 - 位于String value = null;
if(value != null)
{
//do your logic
}
else
{
System.out.println("Null Value");
}
或VCAP_APP_PORT
的路由。如何创建到第二个端口的路由?我不介意将其他名称指向其他端口。
答案 0 :(得分:3)
Cloud Foundry会将来自80/443的TCP / WebSocket流量路由到指定的一个端口。您的应用程序无法侦听任何其他端口。
https://docs.cloudfoundry.org/devguide/deploy-apps/prepare-to-deploy.html#ports
您可以创建多个url映射,也可以使用消息传递或数据库服务创建两个相互通信的应用程序。
答案 1 :(得分:2)
如其他注释中所述,现在可以在CF中为您的应用程序使用多个端口。 CF文档中有一个chapter,描述了如何执行此操作。 我遵循了说明,但仍然难以完全理解它,这就是为什么我在此处提供一些说明的逐步指南(将[]中的所有变量替换为实际值)的原因:
cf app [APP_NAME] --guid
cf curl /v2/apps/[APP_GUID] -X PUT -d '{"ports": [8080, 8081]}'
cf curl /v2/routes?q=host:[HOST_NAME]
或使用cf curl /v2/apps/[APP_GUID]/routes
并保存指向您的应用的路线的向导([ROUTE_GUID])。cf curl /v2/routes/[ROUTE_GUID]/route_mappings
。使用cf curl /v2/route_mappings -X POST -d '{"app_guid": "[APP_GUID]", "route_guid": "[ROUTE_GUID]", "app_port": 8081}'
,您可以向路由添加映射(例如,此处为8081)。cf curl /v2/routes/[ROUTE_GUID]/route_mappings
以显示所有路由映射。然后提取应删除的路由映射的GUID(例如到端口8080的GUID)。最后,运行cf curl /v2/route_mappings/[GUID_ROUTE_MAPPING] -X DELETE
删除不需要的路由映射。现在,当使用新配置的路由时,CF应用程序应该可以在8080以外的其他端口上访问。
答案 2 :(得分:0)
复活一个旧问题,但是Cloud Foundry现在支持此问题。支持已于2019年4月左右添加。请检查您的版本以了解是否支持此功能。
一般过程是:
现在,您必须使用cf curl
来手动更新这些记录。可以在这里找到说明:https://docs.cloudfoundry.org/devguide/custom-ports.html。希望将来的cf cli版本可以使此操作更容易。