Estou tentando dizer ao Spring para adicionar propriedades de um arquivo, que está fora do jar.
Eu tenho o arquivo docker compose onde defino variáveis de ambiente para o aplicativo Spring Boot.
sample-service:
build:
context: "./sample-service/app"
dockerfile: Dockerfile
container_name: sample-service
restart: always
mem_limit: 400000000
env_file: .env
environment:
- "SPRING_PROFILE=dev"
- "APPLICATION_NAME=sample-service"
- "SPRING_CONFIG_ADDITIONAL-LOCATION=file:/app/sample-service-config.yml"
- "JAVA_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5006"
ports:
- 5006:5006
Quando estou no depurador, executo o código personalizado.
System.getenv("SPRING_PROFILE")
Ele retorna dev
. Quando eu corro
System.getenv("APPLICATION_NAME")
Ele retorna sample-service
. Quando eu corro
System.getenv("SPRING_CONFIG_ADDITIONAL-LOCATION")
Ele retorna null
.
Atualizar
Algumas pessoas sugerem que o docker não suporta hifens https://github.com/docker/compose/issues/2370
Bem, é uma loucura ...
Mudei meu Dockerfile que inicia este aplicativo Java, então agora posso passar um local de configuração adicional como um argumento de linha de comando. Também adicionei um script bash para iniciar meu aplicativo Java.
Dockerfile
ENTRYPOINT ./startJavaApp.sh
startJavaApp.sh
java -XX:+UseContainerSupport $JAVA_OPTIONS -jar ../sample-service.jar --spring.config.additional-location=file:/app/sample-service-config.yml
Parece que transmiti-lo como um argumento de linha de comando funcionou.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras