Я устанавливаю переменную окружения в моем файле docker -compose.yaml и хочу использовать значение этой переменной в application.yaml моего Spring Boot. Мне сказали, что в моем приложении Spring.yaml выполняется что-то вроде
app:
auth:
tokenSecret: tokensecretvaluehere
tokenExpirationMsec: 864000000
oauth2:
sso:
url: ${SSO_URL}
(где SSO_URL определен в моем docker -compose.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
Меня попросили не использовать функции System.getenv в Java и вместо этого установить переменную, как указано выше. Оттуда я просто использовал бы аннотацию @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}