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

Программисты 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как указать на Application-local.yml вместо Application-dev.yml в IntelliJ?
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать application.properties в application.yml в Spring Boot?
    Anonymous » » в форуме JAVA
    0 Ответы
    62 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать application.properties в application.yml в Spring Boot?
    Anonymous » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать application.properties в application.yml в Spring Boot?
    Anonymous » » в форуме JAVA
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Как использовать список переменные среды в Spring Boot's Application.yml?
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

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