Java 端口绑定-12因素应用程序

Java 端口绑定-12因素应用程序,java,spring-boot,cloud-foundry,12factor,Java,Spring Boot,Cloud Foundry,12factor,每当我部署SpringBoot应用程序时,它都嵌入了tomcat容器。它依赖于可用的容器。这是否意味着这些都不是12因素应用程序兼容的,因为这取决于Web服务器的运行时注入 TCP路由对于非http服务意味着什么 端口绑定 通过端口绑定导出服务。12因素应用程序是 完全自包含,不依赖于 将web服务器导入执行环境以创建面向web的 服务 对于Pivotal Cloud Foundry,非HTTP服务需要TCP路由 要重新格式化的命令 当您在本地运行spring boot应用程序时,它会以默认配置

每当我部署SpringBoot应用程序时,它都嵌入了tomcat容器。它依赖于可用的容器。这是否意味着这些都不是12因素应用程序兼容的,因为这取决于Web服务器的运行时注入

TCP路由对于非http服务意味着什么

端口绑定

通过端口绑定导出服务。12因素应用程序是 完全自包含,不依赖于 将web服务器导入执行环境以创建面向web的 服务

对于Pivotal Cloud Foundry,非HTTP服务需要TCP路由 要重新格式化的命令


当您在本地运行spring boot应用程序时,它会以
默认配置文件运行。因此,Spring将在运行时利用您的端口和其他设置

当您推到云时,spring boot应用程序将以
cloud
配置文件运行。在
配置文件中,端口设置由云指定,而您提供的设置将被忽略

在PCF中,Diego单元承载所有应用程序实例。Diego手机拥有自己的CIDR块,用于托管应用程序。因此,您的应用程序实例将从该范围获得IP。您无法通过其ip访问应用程序

不过,Diego cell vm的IP来自其运行的网络的CIDR范围。Diego cell还使用NAT将应用程序ip映射到Diego cell vm上的端口。这就是将流量路由到应用程序的方式

如您所见,PCF中的Diego单元无法依赖您提供的端口。相反,它将尽可能地运行应用程序,并将NAT连接到可用端口

看一看

至于你的第二个问题,云铸造中的Go路由器将请求路由到应用程序实例。默认情况下,Go路由器上仅启用http/https流量。您可以在Go路由器上启用TCP路由。我相信这是在PCF 1.9中添加的。 这是我的建议