【问题标题】:Linking two applications in Cloud Foundry在 Cloud Foundry 中链接两个应用程序
【发布时间】:2016-10-11 10:46:08
【问题描述】:

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

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

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

上述命令将在war_container 中创建环境变量,这将公开python_container 的IP 地址和端口。使用这些环境变量,我可以从我的 WAR 应用程序与python_container 通信。这些环境变量如下所示:

PYTHON_CONTAINER_PORT_5000_TCP_ADDR=<ipaddr>
PYTHON_CONTAINER_PORT_5000_TCP_PORT=<port>

问题

是否可以在 Cloud Foundry 中做类似的事情?我已经在 CF 中部署了 docker 容器。我如何链接我的WAR 应用程序,以便在我推送war 文件后立即创建环境变量并链接到python_container

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

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

然后我使用

推送war文件
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

【问题讨论】:

    标签: grails docker cloud-foundry


    【解决方案1】:

    如果您的 Python 应用程序有多个实例,因此有多个 IP/端口,Docker 方式将如何工作?

    对于 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),然后将这些值作为环境变量传递给您的 Java 应用,但这是一个非常脆弱的解决方案。

    如果您对直接的容器到容器网络感兴趣,您可能有兴趣阅读this proposal 并提供反馈。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2019-10-19
      • 1970-01-01
      • 2012-09-20
      • 2013-03-24
      • 1970-01-01
      相关资源
      最近更新 更多