gpt4 book ai didi

java - jetty worker 。 Spring 申请。设置和获取环境变量

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:27 25 4
gpt4 key购买 nike

我正在尝试对我的 Spring 应用程序进行 docker 化。

问题:我无法从 docker 容器获取我的 Spring 应用程序中的环境变量。

Spring 配置(2 个选项,单独尝试)

<bean class="java.net.URI" id="dbUrl">
<constructor-arg value="#{systemProperties['JDBC_CONNECTION_STRING']}"/>
</bean>

<bean class="java.net.URI" id="dbUrl">
<constructor-arg value="#{systemEnvironment['JDBC_CONNECTION_STRING']}"/>
</bean>

在java中也试过

URI dbUrl = URI.create(System.getProperty("JDBC_CONNECTION_STRING"));

我的 docker 配置。使用 docker-compose builddocker-compose up 每次更新值。

docker-compose.yml

app:
build: .
command: catalina.sh run
ports:
- "8888:8080"
links:
- postgres
volumes:
- /usr/bin

postgres:
image: postgres:9.5
ports:
- "5432"
volumes:
- /var/lib/postgresql/data

Dockerfile

FROM tomcat:jre8

ENV JDBC_CONNECTION_STRING 'postgres://postgres:password111@postgres:5432/mydb'

RUN ["rm", "-fr", "/usr/local/tomcat/webapps/ROOT"]
RUN apt-get update && apt-get install -y net-tools postgresql-client

COPY ./target/myapp.war /usr/local/tomcat/webapps/ROOT.war

CMD ["catalina.sh", "run"]

一旦我连接到容器的 bash,set 命令就不会显示我的变量。但是 echo $JDBC_CONNECTION_STRING 显示了该值。

最佳答案

在 java 代码中,您使用的是 java 系统属性,而不是系统环境变量。为了将系统属性传递给 java 进程,您需要在运行命令中指定 -Dkey=value。

因此,如果这是 tomcat,您可以在 $JAVA_OPTS="... -DJDBC_CONNECTION_STRING=$JDBC_CONNECTION_STRING"中设置

关于java - jetty worker 。 Spring 申请。设置和获取环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39392285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com