배치 스트림 응용 프로그램에서 ENV var에 값을 설정 -cloud-dataflow-server-cloudfoundry와 함께 Spring Cloud Config 서버와의 바인딩을 가능하게하는 추가적인 의존성을 제공합니다. 예상대로 작동하는 것 같아 훌륭합니다.사용
내가 개발 한 사용자 정의 모듈로 스트림을 정의하려고 할 때 문제가 발생합니다. 모듈의 환경 변수 (특히 ENCRYPT_KEY)가 내 자식 repo의 매니페스트 YML 파일에있는 곳입니다.
매니페스트 파일의 이름은 customapp-dev.yml
입니다. 매니페스트는 다음과 같습니다 : 속성 파일의
applications:
- name: customapp
env:
ENCRYPT_KEY: keyForEncryption
이름은 customapp-dev.properties
입니다. 특성 파일은 다음과 같습니다
customapp.initial.context.factory=com.sun.jndi.ldap.LdapCtxFactory
customapp.ldap.provider.url=ldap://directory.xyz.com:389/dc=xyz,dc=com
customapp.username=ldap_user
customapp.password={cipher}958f87532ebba83cd81b7b0e9a0a0cc
응용 프로그램은 속성 application.properties
라는 부트 항아리에 파일이 있습니다. 그것은 다음과 같습니다 : 내 스트림을 배포 할 때
spring.application.name=customapp
이, 나는이 같은 명령 줄 속성이 추가 제공 : 응용 프로그램의 배포의 로그를 미행
--properties app.customapp.SPRING_PROFILES_ACTIVE=dev
을, 나는 볼 수 있습니다 설정 서버 인스턴스가 읽혀지고 앱 이름과 프로필이 올바르게 해석되고 있는지 확인하십시오. 설정 클라이언트는 YML 매니페스트와 나의 git repo의 프로퍼티 파일 모두를 매핑합니다.
그러나 오류는 자리 표시자인 customapp.password
에 대한 암호 해독이 없음을 나타냅니다. 내가 명시 적으로 배포 된 (충돌) 응용 프로그램에 대한 ENCRYPT_KEY 환경 변수를 설정하고, 그것을 다시 진행하는 경우
2016-08-26T13:40:46.62-0600 [APP/0] OUT . ____ _ __ _ _
2016-08-26T13:40:46.62-0600 [APP/0] OUT /\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \
2016-08-26T13:40:46.62-0600 [APP/0] OUT (()\___ | '_ | '_| | '_ \/ _` | \ \ \ \
2016-08-26T13:40:46.62-0600 [APP/0] OUT \\/ ___)| |_)| | | | | || (_| | ))))
2016-08-26T13:40:46.62-0600 [APP/0] OUT ' |____| .__|_| |_|_| |_\__, |////
2016-08-26T13:40:46.62-0600 [APP/0] OUT =========|_|==============|___/=/_/_/_/
2016-08-26T13:40:46.63-0600 [APP/0] OUT :: Spring Boot :: (v1.3.5.RELEASE)
2016-08-26T13:40:46.65-0600 [APP/0] OUT Fetching config from server at: https://config-dfcc3100-7514-47e6-b30e-a0eefcf4929d.dev.xyz.com
2016-08-26T13:40:48.13-0600 [APP/0] OUT Located environment: name=customapp, profiles=[dev, cloud], label=master, version=null
2016-08-26T13:40:48.13-0600 [APP/0] OUT Located property source: CompositePropertySource [name='configService', propertySources=[MapPropertySource [name='https://[email protected]/scm/project/app-config.git/dev/customapp-dev.yml'], MapPropertySource [name='https://[email protected]/scm/project/app-config.git/dev/customapp-dev.properties']]]
2016-08-26T13:40:48.16-0600 [APP/0] OUT Application startup failed
2016-08-26T13:40:48.16-0600 [APP/0] OUT java.lang.IllegalStateException: Cannot decrypt: key=customapp.password
, 그것은 잘 시작하고 매력처럼 작동합니다.
내가 배포 할 때 스트림 응용 프로그램의 환경 변수를 지정하는 또 다른 방법이 있습니까?
내 기대가 자동으로 설정 서버에 의해로드 될 것이라고했다. 이것은 스트림을 배포 할 때 자동으로 배포되는 스트림 응용 프로그램이므로 'cf push'를 전혀 사용하지 않습니다. 환경 변수가 고려되지 않아 스트림 배포시 해독이 일어나지 않습니다. 아직 시도하지 않은 한 가지 점은 앱의 JAR에 매니페스트를 묶어서 배포 할 때 읽길 바란다는 것입니다. –
응용 프로그램의 부트 jar 파일에 매니페스트를 번들링하려고 시도했지만 동일한 오류가 발생했습니다. 이 경우 배포 명령 행에서'app.customapp.ENCRYPT_KEY = key'를 사용하지 않는 이유는 무엇입니까? 그것은 "알려진"환경 변수가 아니기 때문입니까? –
매니 페스트 스토리에 추가하려면 : 매니페스트는 적어도 현재로서는 cf (push) 명령 줄 앱에서만 사용됩니다. – ebottard