2016-10-11 3 views
1

내 응용 프로그램은 두 개의 다른 응용 프로그램 (마이크로 서비스?)으로 분할됩니다. 하나는 도커 컨테이너로 CF에 배포되고 다른 컨테이너는 일반 WAR 파일 (grails 응용 프로그램)로 배포됩니다. 도커 컨테이너는 REST API를 제공하는 Python/Flask 애플리케이션입니다. WebApp이 나머지 API를 사용합니다.Cloud Foundry에서 두 응용 프로그램 연결

이전에이 애플리케이션을 두 개의 분리 된 도커 컨테이너로 사용하여 도커 --link flag을 사용하여 실행했지만 지금은 Cloud Foundry에 이러한 애플리케이션을 배치하려고합니다. 도커 세계에서 저는 다음과 같이했습니다.

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

위의 명령은 python_container의 IP 주소와 포트를 노출 될 수 war_container에서 환경 변수를 만들 것입니다. 이러한 환경 변수를 사용하여 내 WAR 응용 프로그램에서 python_container과 통신 할 수있었습니다. 이 환경 변수는 다음과 같이 보일 것이다 :

PYTHON_CONTAINER_PORT_5000_TCP_ADDR=<ipaddr> 
PYTHON_CONTAINER_PORT_5000_TCP_PORT=<port> 

질문

는 클라우드 파운드리에서 비슷한 일을 할 수 있습니까? 나는 도커 컨테이너를 이미 CF에 배치했다. 내 WAR 응용 프로그램을 연결하여 war 파일을로드하자마자 python_container에 연결된 환경 변수가 만들어 지도록 만들려면 어떻게해야합니까?

현재 내가 사용 PCFDev하기 위해 고정 표시기 컨테이너를 밀어이 :

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

내가 cf-sample에 대한

cf push cf-sample -n cf-sample 

manifest.yml를 사용하여 war 파일을 푸시는 다음과 같습니다

--- 
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).

파이썬 응용 프로그램의 IP 및 포트 (예 : https://docs.run.pivotal.io/devguide/deploy-apps/environment-variable.html#CF-INSTANCE-IP 참조)를 검색 한 다음이 값을 Java 응용 프로그램에 환경 변수로 전달할 수도 있지만 매우 취약합니다.

직접 컨테이너 - 컨테이너 네트워킹에 관심이 있다면 this proposal에 대한 정보를 읽고 피드백을 얻는 것이 좋습니다.

관련 문제