我正在尝试将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
答案 0 :(得分:0)
原来,您还需要一个裸露的环境变量VCAP_APPLICATION来触发另一个变量的读取。甚至可以是空的