gpt4 book ai didi

spring-boot - 在 Spring application.yaml 中读取 docker env 变量

转载 作者:行者123 更新时间:2023-12-02 19:00:34 30 4
gpt4 key购买 nike

我在我的 docker-compose.yaml 文件中设置了一个环境变量,并希望在我的 Spring Boot 的 application.yaml 中使用该变量的值。有人告诉我做类似的事情

app:
auth:
tokenSecret: tokensecretvaluehere
tokenExpirationMsec: 864000000
oauth2:
sso:
url: ${SSO_URL}

(其中 SSO_URL 在我的 docker-compose.yaml 中定义)在我的 Spring application.yaml 中。但是,当我运行 docker-compose up --build 时,这会导致错误,因为它找不到该变量(错误类似于:无法解析值“${SSO_URL}”中的占位符 SSO_URL)。这是我的 docker-compose.yaml 的一个示例:
api:
restart: always
ports:
- "8080:8080"
links:
- redis
- db
environment:
- SERVER_SERVLET_SESSION_COOKIE_DOMAIN=localhost
- SSO_URL=myvaluehere

我被要求不要在 Java 中使用 System.getenv 函数,而是像上面一样设置变量。从那里我只需使用 @Value 注释在我的 Java 代码中获取它,如下所示:
@Value("${app.oauth2.sso.url}")
private String ssoUrl;

这更多的是 application.yaml:
heb:
togglr:
jwt:
secret:
id: 101
session:
seconds: 600
tokenheader: X-TOGGLR-TOKEN
logging:
level:
com:
heb: debug
default: debug
path: logs
server:
error:
whitelabel:
enabled: false
port: 8080
servlet:
context-path: /togglr-api
use-forward-headers: true
spring:
application:
name: togglr_api
freemarker:
enabled: false
groovy:
template:
enabled: false
jmx:
enabled: false
main:
banner-mode: 'off'
thymeleaf:
cache: false
security:
oauth2:
client:
registration:
github:
clientId:
clientSecret:
redirectUri:
scope:
- user:email
- read:user
app:
auth:
tokenSecret:
tokenExpirationMsec: 864000000
oauth2:
sso:
url: ${SSO_URL}

最佳答案

一般来说,spring boot 应用程序能够读取 docker 容器中可访问的环境变量。它在 documentation 中说明(请参阅文档开头列表中的第 10 项)。

所以问题可能出在其他地方:

  • 这可能是问题中的一个错字,但如果您使用的是 application.yaml 而不是应用程序属性,那么您应该有类似:
  •   sso:
    url: ${SSO_URL}
  • 确保即使在启动 spring boot 应用程序之前,env 变量 SSO_URL 确实可以在容器中访问。在 java 中(仅用于调试目的),您可以执行以下操作:
  • @SpringBootApplication
    public class MyApp {
    public static void main(String [] args) {
    System.out.println(System.getenv("SSO_URL"));
    SpringApplication.run(MyApp.class);
    }
    }

    关于spring-boot - 在 Spring application.yaml 中读取 docker env 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60767510/

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