2017-11-15 20 views
0

예를 들어 ConfigurableEnvironment 및 cloud foundry 인스턴스 인덱스를 사용하여 클라우드 파운드리에 배포 된 스프링 부팅 응용 프로그램의 모든 인스턴스에 대해 프로그래밍 방식으로 다른 프로필을 설정할 수 있습니까?클라우드 foundy의 스프링 부팅 응용 프로그램 인스턴스 별 프로필이 서로 다릅니다

+0

사용 사례는 무엇입니까? 다르게 작동하는 응용 프로그램의 인스턴스를 갖고 싶지는 않습니다. CF로 푸시하는 각 응용 프로그램은 하나 이상의 인스턴스를 가질 수 있으며 해당 인스턴스는 정확히 동일해야합니다. 다른 동작을 원하면 여러 응용 프로그램을 푸시해야합니다. –

+0

인스턴스는 프로필이 둘 이상의 목욕 작업을 실행하기위한 구성을로드하는 데 사용된다는 점을 제외하면 동일한 기능을 갖습니다. Eatch 작업은 자체 인스턴스에서 실행됩니다. – Moam

+0

쿼츠 스케줄러를 클러스터 모드로 사용하여 모든 인스턴스에서 실행을 분산시키는 방법은 무엇입니까? 어떤 인스턴스가 어떤 작업을 실행하고 있는지 하드 코딩하면 인스턴스가 다운 된 경우 문제가 발생합니다. – NOTtardy

답변

0

작업을 사용하는 것이 좋습니다.

https://docs.cloudfoundry.org/devguide/using-tasks.html

다음은이 일하는 것이 대략 방법입니다.

  1. cf push을 실행하여 애플리케이션을 CF에 배포하십시오. 실제로 실행할 응용 프로그램이 없으면 정상입니다. 앱을 밀고 한 번 시작하여 방울을 단계적으로 만들어야합니다. 그런 다음 cf stop을 실행하여 인스턴스를 종료 할 수 있습니다 (앱이 적어도 한 번 이상 실행되어야하므로 cf push --no-start이 작동하지 않음).

  2. cf run-task <app> <command>. 여기서 일괄 처리 작업을 시작할 수 있습니다. <command> 인수는 배치 작업을 실행하기위한 전체 명령이 될 것입니다. 여기서 사용해야 할 프로파일을 나타내는 인수를 포함 할 수 있습니다. 예 : --spring.profiles.active=dev,hsqldb.

    https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html

    당신은 자바 buildpack 경로에 넣어하지 않기 때문에 java exceutable의 전체 또는 상대 경로를 사용해야합니다. JVM 버전을 인쇄 한 작업을 실행하려면이 명령을 '.java-buildpack/open_jdk_jre/bin/java -version'으로 사용하십시오.

    예 : cf run-task <app> '.java-buildpack/open_jdk_jre/bin/java -version'

    이 명령에 자바 실행 파일의 경로를 하드 코딩의 단점이 SO post 생각을 참조하십시오. 제 제안은 당신이 cf push을 실행할 때 열거 된 명령을 취하고 필요에 따라 수정하는 것입니다.