Dockerized Spring Boot应用程序未读取VCAP_SERVICES环境变量JSON

时间:2019-08-05 01:26:39

标签: spring-boot docker environment-variables cloudfoundry pivotal-cloud-foundry

我正在尝试将VCAP_SERVICES(带下划线的所有Caps)传递到我的带有Spring Boot应用程序的docker容器中。该应用程序启动,仅忽略变量中的任何值。我使用的是配置服务器,日志的第一行通常是记录该配置服务器所在的位置。它总是尝试访问localhost:8888,这是默认设置。

Docker映像基于openjdk:8基本映像,并且已扩展的jar文件被简单地复制到其中。

我尝试了多种将json传递给它的方法:

1-作为名为ENV的{​​{1}},值只是JSON对象 2-作为名为VCAP_SERVICES的ENV,带有JSON对象,该对象具有名为VCAP_SERVICES的属性 3-尝试从我的google-fu中传递不同的SPRING_APPLICATION_JSON变量”

ENV
ENV SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_USE_SPRING_APPLICATION_JSON=false 
ENV SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_TASK_USE_SPRING_APPLICATION_JSON=false
ENV JBP_CONFIG_SPRING_AUTO_RECONFIGURATION="{enabled: false}"

我希望日志记录指示正确的配置服务器:

FROM openjdk:8
EXPOSE 80
EXPOSE 443
WORKDIR / app

ENV SPRING_APPLICATION_NAME="application name"  
ENV VCAP_SERVICES="{  \"p-config-server \": [ { \"credentials \": {  \"access_token_uri \":  \"https://configserverURL/oauth/token \",  \"client_id \":  \"AUNIQUECLIENTID \",  \"client_secret \":  \"ASECRET\",  \"uri \":  \"https://CONFIGSERVERURL \" },  \"gateway_name \":  \" \",  \"label \":  \"p-config-server \",  \"name \":  \"config-server \",  \"instance_name \":  \"config-server \", \"tags \": [  \"configuration \",  \"spring-cloud \" ],  \"volume_mounts \": [] }  }"

COPY / .
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-cp",".","org.springframework.boot.loader.JarLauncher"]

但我却得到

main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : https://CONFIGSERVERURL

在PCF中,启动命令如下所示:

main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888

1 个答案:

答案 0 :(得分:0)

原来,您还需要一个裸露的环境变量VCAP_APPLICATION来触发另一个变量的读取。甚至可以是空的