在Cloud Foundry中链接两个应用程序

我的应用程序分为两个不同的应用程序(微服务?)。 一个部署到CF作为docker集装箱,另一个部署为常规的WAR文件(grails应用程序)。 Docker容器是一个公开REST API的Python / Flask应用程序。 WebApp使用这个剩余的API。

以前,我将这些应用程序作为两个独立的--link flag容器,并使用--link flag执行,但现在我正在将这些应用程序放在Cloud Foundry中。 在docker世界,我曾经做过以下事情。

 docker run -d --link python_container -p 8080:8080 --name war_container war_image 

上面的命令将在war_container中创build环境variables,这将暴露war_container的IP地址和端口。 使用这些环境variables,我可以从我的WAR应用程序与python_container通信。 这些环境variables如下所示:

 PYTHON_CONTAINER_PORT_5000_TCP_ADDR=<ipaddr> PYTHON_CONTAINER_PORT_5000_TCP_PORT=<port> 

是否有可能在Cloud Foundry中做类似的事情? 我有已经部署在CF中的docker容器。 我怎样才能链接我的WAR应用程序,以便一旦我推送战争文件,环境variables就会被创build并链接到python_container

目前我使用这个推docker容器到PCFDev:

 cf push my-app -o 192.168.0.102:5002/my/container:latest 

然后我推动战争文件使用

 cf push cf-sample -n cf-sample 

cf-sample的manifest.yml是:

 --- applications: - name: cfsample memory: 1G instances: 1 path: target/cf-sample-0.1.war buildpack: java_buildpack services: - mysql - rabbitmq 

如果你有多个你的Python应用程序的实例,那么Doc​​ker的工作方式如何呢?因此多个IP /端口呢?

对于PCF,您可以让Java应用程序通过“前门”与您的Python应用程序进行交谈: https : //my-python-app.local.pcfdev.io 。

您也可以尝试发现您的Python应用程序的IP和端口(例如,请参阅https://docs.run.pivotal.io/devguide/deploy-apps/environment-variable.html#CF-INSTANCE-IP ),然后传递值作为环境variables的Java应用程序,但这是一个非常脆弱的解决scheme。

如果你对直接的容器到容器networking感兴趣,你可能有兴趣阅读关于这个提议并给予反馈。