DeployCode
Сборка и развёртывание

Переменные окружения

Значения, секреты и ссылки на сервисы для приложений.

Где задавать

УровеньГде в панели
Приложение«Архитектура» → панель сервиса → вкладка «Переменные». При создании сервиса — в «Дополнительных настройках» мастера
Окружение«Окружения» → «Переменные окружения», область «Окружение»
ПроектТам же, область «Весь проект»

Имя переменной — латиница, цифры и подчёркивание, не может начинаться с цифры.

В контейнер приложения попадают только переменные приложения. Переменные окружения и проекта — это общие значения: приложение получает их, только если сослаться на них, см. ниже.

Тип значения

ТипЧто это
Обычное значениеТекст, который видно в панели
СекретХранится зашифрованным и скрыт в списках
Ссылка на сервисЗначение берётся из базы PostgreSQL или домена другого приложения. Только для переменных приложения

Когда используется

Поле «Использовать при»:

ВариантКогда переменная доступна
Только запускВ работающем контейнере. Вариант по умолчанию для новых переменных
Только сборкаВо время сборки образа
Сборка и запускИ во время сборки, и в работающем контейнере

Переменные для сборки (например, NEXT_PUBLIC_* для Next.js или RAILPACK_* для настройки сборки) отметьте «Сборка и запуск» или «Только сборка». С вариантом по умолчанию они до сборки не дойдут.

Переменные, созданные до появления этапов, работают и при сборке, и при запуске.

Секреты

  • Значение секрета хранится зашифрованным и не показывается в списках. Посмотреть или скопировать его можно отдельно — «Показать значение».
  • Чтобы поменять секрет, отметьте «Заменить сохранённое значение» и введите новое. Если не отмечать, сохранённое значение не изменится.
  • В журналах развёртывания значения секретов маскируются.

Маскируются только сами значения. Если приложение выводит секрет в изменённом виде (например, в base64), панель его не узнает. Исходные файлы журналов на сервере остаются как есть.

Ссылки на сервисы

Тип «Ссылка на сервис» избавляет от копирования адресов и паролей: значение подставляется из источника в момент развёртывания.

ИсточникЧто можно подставить
PostgreSQLСтроку подключения, хост, порт, имя базы, пользователя или пароль — через внутреннюю сеть или внешний адрес
Домен другого приложенияАдрес приложения в этом же окружении
  • Внутренняя сеть работает, только если приложение и база на одном сервере, и только при запуске. Для сборки выберите внешнее подключение.
  • Внешний адрес требует открытого внешнего порта базы.
  • Выбор ссылки не открывает порты и не меняет сети. Сохранённый адрес не означает, что соединение работает. Доступ к базе можно проверить на странице «Архитектура».

Значения ссылок, как и секреты, маскируются в журналах.

Ссылки на переменные

В обычном значении переменной приложения можно сослаться на другую переменную:

СинтаксисОткуда берётся значение
${{project.KEY}}Переменная KEY проекта
${{environment.KEY}}Переменная KEY окружения
${{KEY}}Другая переменная KEY этого же приложения

Например, общий адрес API задаётся один раз в окружении, а приложения ссылаются на него:

API_URL=${{environment.API_URL}}

Ссылаться можно и на секрет — подставится его значение. Переменная, на которую ссылаются, должна быть доступна на том же этапе: ссылка из переменной для сборки на переменную «Только запуск» не сработает.

Если переменной, на которую ссылается значение, нет, развёртывание завершится ошибкой.

Когда применяются изменения

Значения переменных, секретов и ссылок фиксируются в момент запроса на развёртывание. Изменения после этого действуют только на новые развёртывания. Откат и повтор используют сохранённые значения. Если источник ссылки удалён или значение не удаётся расшифровать, развёртывание остановится, а не подставит пустую строку.

Новое окружение не копирует секреты и ссылки из других окружений — задайте их заново.

Файлы конфигурации

Передавать целые файлы конфигурации из панели пока нельзя — см. Каталоги и файлы сервера.

На этой странице