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



我正在尝试将VCAP_SERVICES(所有大写字母带下划线(传递给我的docker容器,其中包含Spring Boot应用程序。应用程序出现并简单地忽略变量中的任何值。我正在使用配置服务器,日志的第一行通常是记录该配置服务器的位置。它总是试图命中本地主机:8888,这是默认值。

Docker 镜像基于 openjdk:8 基础镜像,扩展的 jar 文件只需复制到其中即可。

我已经尝试了许多不同的方法来传递 json:

1-作为名为VCAP_SERVICESENV,值只是JSON对象 2- 作为名为 SPRING_APPLICATION_JSON 的 ENV,其中包含具有名为 VCAP_SERVICES 的属性的 JSON 对象 3-试图从我的谷歌福中传入不同的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

但相反,我得到了

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

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

 JAVA_OPTS="-agentpath:$PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.16.0_RELEASE=printHeapHistogram=1 -Djava.io.tmpdir=$TMPDIR -Djava.ext.dirs=$PWD/.java-buildpack/container_security_provider:$PWD/.java-buildpack/open_jdk_jre/lib/ext -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security $JAVA_OPTS" && CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-3.13.0_RELEASE -totMemory=$MEMORY_LIMIT -loadedClasses=32446 -poolType=metaspace -stackThreads=250 -vmOptions="$JAVA_OPTS") && echo JVM Memory Configuration: $CALCULATED_MEMORY && JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 SERVER_PORT=$PORT eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher

事实证明,您还需要一个裸VCAP_APPLICATION的环境变量来触发另一个变量的读取。它甚至可以显然是空的

最新更新