DinD HostingПосібник
ENУК
Огляд/Посібник/Збірка й розгортання
РОЗДІЛ 07

Середовище та секрети

Конфігурація зберігається поза вихідним кодом. Задавайте змінні в консолі, через REST або з агента — платформа зберігає їх (секрети в зашифрованому вигляді) і застосовує, коли застосунок перестворюється.

Три рівні#

3 Змінні проєктуКонсоль · «Середовище» · REST PUT /projects/{id}/env/{key} · MCP set_envСекрети зашифровані й доступні лише для запису. Зарезервовані імена відхиляються.2 platform.yaml env:зберігається разом із кодом; одне значення на ключМоже перекрити ім'я, додане платформою (поведінка не змінилась).1 Додані платформоюPORT · PLATFORM_PROJECT · PLATFORM_USER · S3_* (s3: true) · DB_<NAME>_* (databases:)Завжди присутні; власний «контракт» платформи з вашим застосунком.пізніший рівень перекриває те саме ім'яКонтейнер застосункупідсумкове середовищезбирається за кожного розгортанняі перестворення
Середовище контейнера застосунку складається з трьох рівнів — від нижчого до вищого. Пізніший рівень перекриває змінну з таким самим іменем.
  1. Додані платформою — завжди PLATFORM_PROJECT, PLATFORM_USER і PORT; з s3: true також S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY, S3_SECRET_KEY; для кожної бази даних у databases: — п'ять змінних DB_<NAME>_*.
  2. platform.yaml → env — сталі значення, що зберігаються разом із вихідним кодом.
  3. Змінні проєкту — те, чим ви керуєте на вкладці «Середовище». Цей рівень має найвищий пріоритет; він ніколи не може перекрити ім'я, яке належить платформі, бо зарезервовані імена відхиляються.

Вкладка «Середовище»#

hosting.example.com/projects/7
Середовище
Вкладка «Середовище». (1) банер нагадує, що зміни застосовуються після перестворення, (2) секрет показується як чотири крапки й може лише бути замінений, але не прочитаний, (3) додавання, зміна та видалення.

Натисніть «Додати змінну», вкажіть ім'я та значення й позначте «секретна», якщо значення є обліковими даними. Секрети зберігаються в зашифрованому вигляді й показуються як ••••. Коли ви змінюєте секрет, поле спочатку порожнє — введене нове значення замінює старе.

Після будь-якої зміни вкладка показує «Збережено, але ще не застосовано.» Запущений застосунок працює зі старими змінними, доки ви не натиснете «Перестворити застосунок зараз» (кілька секунд простою, томи зберігаються) або не розгорнете знову.

Правила#

Правило Значення
Ім'я [A-Za-z_][A-Za-z0-9_]*, не більше 128 символів
Зарезервовані (відхиляються) PORT, усе, що починається з PLATFORM_, S3_ або DB_
Значення не більше 8 КіБ
Кількість не більше 100 змінних на проєкт
Багаторядкові секрети задаються через REST або MCP; поле в консолі однорядкове

Лише під час роботи

Змінні недоступні під час збірки образу. npm run build, pip install та подібні команди їх не бачать. Конфігурацію для збірки задавайте в build_cmd/install_cmd у platform.yaml або читайте змінну під час запуску застосунку.

Секрети лише для запису#

Значення секрету не повертається жодним шляхом — ні консоллю, ні REST, ні MCP, ні записами аудиту, ні журналами, ні повідомленнями про помилки. Єдиний спосіб його змінити — задати його знову. Вкладка «Застосунок» і GET /projects/{id}/app перелічують імена, які отримує застосунок, і їхнє джерело (platform, platform.yaml, project variable), а там, де це доречно, — позначку «секретна»; значень вони не показують ніколи.

Усе, що ви передаєте агенту, стає частиною розмови

Через MCP-інструмент set_env значення проходить крізь контекст агента. Використовуйте set_env для безпечної конфігурації, а справжні облікові дані задавайте в консолі.

REST і MCP#

bash
# список (значення секретів завжди null)
curl -fsS "$BASE/api/v1/projects/$PID/env" -H "Authorization: Bearer $TOKEN"

# створити або оновити
curl -fsS -X PUT "$BASE/api/v1/projects/$PID/env/LOG_LEVEL" \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"value":"debug","is_secret":false}'

# видалити (значення з platform.yaml з таким самим іменем знову починає діяти)
curl -fsS -X DELETE "$BASE/api/v1/projects/$PID/env/LOG_LEVEL" -H "Authorization: Bearer $TOKEN"

# застосувати
curl -fsS -X POST "$BASE/api/v1/projects/$PID/app/recreate" -H "Authorization: Bearer $TOKEN"
list_env(project=7)
set_env(project=7, key="LOG_LEVEL", value="debug", is_secret=false)
unset_env(project=7, key="LOG_LEVEL")
app_recreate(project=7)

set_env повертає {key, is_secret, value, created, note}; для секретів значення дорівнює null.

Який рівень задав цю змінну?#

Відкрийте вкладку «Застосунок»: картка «Змінні середовища» перелічує імена всіх змінних зі стовпцем «Джерело». Ім'я, що трапляється в списку один раз, має рівно одне джерело; ім'я, яке ви задали і в platform.yaml, і як змінну проєкту, показує переможця — змінну проєкту.