Как указать переменные окружения в файле services.yaml для их дальнейшей установки?

Как можно корректно задать переменные окружения в Symfony с использованием функции `env()` в файле `services.yaml` для проекта? Нужно ли выполнить дополнительные действия для правильной работы данного подхода? Взглянув на документацию Symfony, мне кажется, что этот способ должен работать, но что может мешать его правильной работе?
  • 27 мая 2024 г. 9:51
Ответы на вопрос 2
Для указания переменных окружения в файле `services.yaml` для их дальнейшей установки, вы можете использовать функцию `env()` в значениях параметров или аргументов сервисов. Например:

```yaml
services:
    App\Service\SomeService:
        arguments:
            $apiKey: '%env(API_KEY)%'
```

В данном примере, переменная окружения `API_KEY` будет считываться из файла `.env` и передаваться в качестве аргумента для сервиса `App\Service\SomeService`.

Чтобы использовать переменные окружения в Symfony с помощью функции `env()` в файле `services.yaml`, убедитесь, что:
1. В вашем проекте присутствует файл `.env`, содержащий необходимые переменные окружения.
2. В файле `.env` переменные окружения установлены в формате `KEY=VALUE`.
3. В файле `services.yaml` используется функция `env()` для получения значений переменных окружения.

Ничто не должно помешать правильной работе данного подхода, если указанные условия выполнены. Помните, что при использовании переменных окружения в Symfony важно, чтобы они были установлены не только в файле `.env`, но и в рабочей среде (например, на сервере, на котором будет запускаться приложение Symfony).
env(POSTGRES_PASSWORD) - таким образом вы инициализируете переменную окружения для контейнера. В окружение она не добавляется. 

Можно попробовать что-то вроде этого:
env(DATABASE_URL)="postgresql://%env(POSTGRES_USER)%:%env(POSTGRES_PASSWORD)%@%env(POSTGRES_HOST)%:%env(POSTGRES_PORT)%/%env(POSTGRES_DB)%?serverVersion=%env(POSTGRES_VERSION)%&charset=utf8"

doctrine:
    dbal:
        url: '%env(resolve:DATABASE_URL)%'


Но, мне кажется, удобнее задавать непосредственно DSN, не разбивая его на параметры
Похожие вопросы