﻿# Шаблон Vast.ai: порты, переменные окружения и повторный запуск

Как подготовить воспроизводимый шаблон Vast.ai: версия образа, launch mode, startup-скрипт, порты и переменные окружения без публикации секретов.

Автор: Команда Retrivium
Обновлено: 2026-11-01
Канонический URL: https://retrivium.ai/ru/journal/vast-ai-template-environment-variables/
Language: ru

Шаблон Vast.ai описывает Docker-образ, режим запуска, порты и инициализацию нового экземпляра. Его стоит хранить как воспроизводимый рецепт проекта. Изменение шаблона влияет на следующие создания, поэтому нельзя ожидать автоматического обновления уже запущенного контейнера.

## Зафиксируйте основу окружения

[Руководство выбора шаблона](https://docs.vast.ai/guides/instances/choosing/templates) перечисляет основные настройки и различает SSH, Jupyter и Entrypoint. Выберите режим под способ работы команды и укажите конкретную версию образа. Метка `latest` не даёт надёжного объяснения, почему две сессии получили одинаковую среду.

Сохраните название репозитория, тег и при необходимости идентификатор образа. Рядом запишите версию собственного кода и команду запуска. Эти данные занимают мало места, но без них успешный ручной эксперимент сложно повторить на следующем экземпляре или передать другому сотруднику.

## Сделайте инициализацию понятной

Startup-скрипт должен сообщать, какой этап выполняется и где искать журнал. Разделите подготовку среды и запуск основного процесса. Если загрузка данных не удалась, задача не должна создавать внешне успешный пустой результат только потому, что последняя команда завершилась без ошибки.

Продумайте повторное выполнение: существует ли каталог, загружен ли нужный файл, не будет ли уничтожен предыдущий результат. Для долгой установки предпочтительно подготовить проверенный образ, а не каждый раз воспроизводить большой набор изменяемых внешних зависимостей. Конкретный выбор проверяют по своему процессу сборки.

## Переменные и порты связаны с приложением

[Документация Docker environment](https://docs.vast.ai/guides/instances/docker-environment) описывает особенности среды экземпляра. Переменные проекта задавайте явно, отличая настройку каталога, имя модели и секретный токен. Список обязательных имён полезно хранить вместе с рецептом без приватных значений.

Порт в шаблоне должен соответствовать сервису, который реально запускается. Публикация HTTP-порта не запускает приложение и не устанавливает авторизацию. После создания берите внешний адрес из текущего экземпляра: внутренний порт контейнера и внешний сопоставленный порт имеют разные назначения.

## Пример проверки обновлённого рецепта

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

| Проверка | Что подтверждает |
| --- | --- |
| Версия образа | Понятная исходная среда |
| Журнал инициализации | Видимый результат подготовки |
| Контрольный файл | Правильный каталог и права |
| Подключение к сервису | Соответствие порта процессу |
| Повторный запуск | Отсутствие случайной ручной зависимости |

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

Отдельно задайте критерий готовности приложения. Завершившийся startup-скрипт ещё не показывает, что сервис загрузил данные и способен обработать запрос. Маленькая проверка готовности должна возвращать понятный результат и попадать в журнал. Тогда автоматизация и человек одинаково понимают, когда среда действительно пригодна для следующего этапа вычислений, а когда она только создана.

## Практические выводы

Коллега должен создать среду по описанию и выполнить небольшой тест без доступа к вашей истории терминала. Если это не получается, недостающий шаг добавляют в рецепт. Приватные ключи, личные токены и неопубликованные локальные файлы не должны быть скрытым условием успешного запуска.

Для доступа используйте [материал SSH и Jupyter](/ru/journal/vast-ai-ssh-jupyter-ports/), для замены экземпляра — [план переноса данных](/ru/journal/vast-ai-copy-data-between-instances/). Проверяемый рецепт поможет предметно обсудить подготовку машины.
