2016-10-11 30 views
1

我的應用程序分爲兩個不同的應用程序(微服務?)。一個部署到CF作爲碼頭容器,另一個部署爲常規WAR文件(grails應用程序)。 docker容器是一個公開REST API的Python/Flask應用程序。 WebApp使用這個剩餘的API。在Cloud Foundry中鏈接兩個應用程序

此前,我將這些應用程序作爲兩個獨立的docker容器,並使用docker --link flag執行它們,但現在我正在將這些應用程序放在Cloud Foundry中。在碼頭世界,我曾經做過以下事情。

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的環境變量。

目前我推泊塢窗容器使用到PCFDev此:

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

然後我把使用

cf push cf-sample -n cf-sample 

的manifest.yml爲cf-sample戰爭文件爲:

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

回答

2

如果您有多個Python應用程序,Docker的工作方式會如何工作,並因此多個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),然後將這些值作爲環境變量傳遞給Java應用程序,但這是一個非常脆弱的解決方案。

如果您有興趣直接從容器到集裝箱的網絡,您可能有興趣閱讀關於this proposal的信息並提供反饋。

相關問題