Переменные окружения
Значения, секреты и ссылки на сервисы для приложений.
Где задавать
| Уровень | Где в панели |
|---|---|
| Приложение | «Архитектура» → панель сервиса → вкладка «Переменные». При создании сервиса — в «Дополнительных настройках» мастера |
| Окружение | «Окружения» → «Переменные окружения», область «Окружение» |
| Проект | Там же, область «Весь проект» |
Имя переменной — латиница, цифры и подчёркивание, не может начинаться с цифры.
В контейнер приложения попадают только переменные приложения. Переменные окружения и проекта — это общие значения: приложение получает их, только если сослаться на них, см. ниже.
Тип значения
| Тип | Что это |
|---|---|
| Обычное значение | Текст, который видно в панели |
| Секрет | Хранится зашифрованным и скрыт в списках |
| Ссылка на сервис | Значение берётся из базы PostgreSQL или домена другого приложения. Только для переменных приложения |
Когда используется
Поле «Использовать при»:
| Вариант | Когда переменная доступна |
|---|---|
| Только запуск | В работающем контейнере. Вариант по умолчанию для новых переменных |
| Только сборка | Во время сборки образа |
| Сборка и запуск | И во время сборки, и в работающем контейнере |
Переменные для сборки (например, NEXT_PUBLIC_* для Next.js или RAILPACK_* для настройки сборки)
отметьте «Сборка и запуск» или «Только сборка». С вариантом по умолчанию они
до сборки не дойдут.
Переменные, созданные до появления этапов, работают и при сборке, и при запуске.
Секреты
- Значение секрета хранится зашифрованным и не показывается в списках. Посмотреть или скопировать его можно отдельно — «Показать значение».
- Чтобы поменять секрет, отметьте «Заменить сохранённое значение» и введите новое. Если не отмечать, сохранённое значение не изменится.
- В журналах развёртывания значения секретов маскируются.
Маскируются только сами значения. Если приложение выводит секрет в изменённом виде (например, в base64), панель его не узнает. Исходные файлы журналов на сервере остаются как есть.
Ссылки на сервисы
Тип «Ссылка на сервис» избавляет от копирования адресов и паролей: значение подставляется из источника в момент развёртывания.
| Источник | Что можно подставить |
|---|---|
| PostgreSQL | Строку подключения, хост, порт, имя базы, пользователя или пароль — через внутреннюю сеть или внешний адрес |
| Домен другого приложения | Адрес приложения в этом же окружении |
- Внутренняя сеть работает, только если приложение и база на одном сервере, и только при запуске. Для сборки выберите внешнее подключение.
- Внешний адрес требует открытого внешнего порта базы.
- Выбор ссылки не открывает порты и не меняет сети. Сохранённый адрес не означает, что соединение работает. Доступ к базе можно проверить на странице «Архитектура».
Значения ссылок, как и секреты, маскируются в журналах.
Ссылки на переменные
В обычном значении переменной приложения можно сослаться на другую переменную:
| Синтаксис | Откуда берётся значение |
|---|---|
${{project.KEY}} | Переменная KEY проекта |
${{environment.KEY}} | Переменная KEY окружения |
${{KEY}} | Другая переменная KEY этого же приложения |
Например, общий адрес API задаётся один раз в окружении, а приложения ссылаются на него:
API_URL=${{environment.API_URL}}Ссылаться можно и на секрет — подставится его значение. Переменная, на которую ссылаются, должна быть доступна на том же этапе: ссылка из переменной для сборки на переменную «Только запуск» не сработает.
Если переменной, на которую ссылается значение, нет, развёртывание завершится ошибкой.
Когда применяются изменения
Значения переменных, секретов и ссылок фиксируются в момент запроса на развёртывание. Изменения после этого действуют только на новые развёртывания. Откат и повтор используют сохранённые значения. Если источник ссылки удалён или значение не удаётся расшифровать, развёртывание остановится, а не подставит пустую строку.
Новое окружение не копирует секреты и ссылки из других окружений — задайте их заново.
Файлы конфигурации
Передавать целые файлы конфигурации из панели пока нельзя — см. Каталоги и файлы сервера.