Как правильно получить доступ к переменным среды в application.yml из корневого каталога проекта в приложении Spring Boo ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Как правильно получить доступ к переменным среды в application.yml из корневого каталога проекта в приложении Spring Boo

Сообщение Anonymous »

Я пытаюсь настроить Postgres для службы в Spring Boot 3, но не могу заставить работать переменные среды.
Жесткое кодирование свойств БД работает нормально, как показано ниже. .

Код: Выделить всё

spring:
datasource:
url: jdbc:postgresql://localhost:5432/abc-shop
username: postgres
password: postgres
Но использование следующего кода приводит к ошибке.

Код: Выделить всё

spring:
datasource:
url: jdbc:postgresql://${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
username: ${POSTGRES_USER}
password: ${POSTGRES_PASSWORD}

Код: Выделить всё

java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, jdbc:postgresql://${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
У меня есть переменные среды в файле .env в корневом каталоге проекта, и я также передаю их
из файла docker-compose.
Вот файл .env –

Код: Выделить всё

POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=abc-shop
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
Вот файл docker-compose -

Код: Выделить всё

version: '3.8'

services:
postgres:
image: postgres:latest
container_name: postgress_db
restart: always
environment:
POSTGRES_HOST: ${POSTGRES_HOST}
POSTGRES_PORT: ${POSTGRES_PORT}
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data

volumes:
postgres_data:
Я проверил контейнер postgres на локальном компьютере и обнаружил, что там присутствуют переменные среды. Весна просто не может их прочитать. Кроме того, в предыдущем проекте я заставил его работать точно так же в производственной среде, где у меня были переменные среды в секретах GitHub Actions.
Также очевидно, что жестко запрограммировать значения в среда разработки не имеет особого значения, и я это знаю, мне просто интересно, почему это не сработает.
Дайте мне знать, если вам нужна дополнительная информация, спасибо!< /п>

Подробнее здесь: https://stackoverflow.com/questions/790 ... rojects-ro

Вернуться в «JAVA»