Skip to main content

Сохранение переменных среды и временных файлов

Настраиваемые переменные среды можно настроить так, чтобы они устанавливались на одно и то же значение при каждом открытии пространства кода. Вы также можете убедиться, что временные файлы не удаляются при остановке пространства кода.

Настройка постоянных переменных среды

В зависимости от того, какие пространства кода, репозитории или пользователи должны быть доступны переменным, можно задать постоянные пользовательские переменные несколькими способами.

Для всех методов настройки пользовательских переменных, перечисленных ниже, можно получить доступ к пользовательской переменной в пространстве кода с помощью синтаксиса, например echo $VARNAME.

Для одного пространства кода

Можно задать значение переменной среды в ~/.bashrc файле или в эквивалентном файле конфигурации, если вы не используете оболочку Bash. Например, добавьте инструкцию VARNAME=value.

После сохранения изменения в этом файле значение будет задано при следующем открытии пространства кода или его можно задать немедленно с помощью такой команды source ~/.bashrc. Переменная останется заданной, если остановить и запустить пространство кода. Однако изменения файлов в домашнем каталоге будут сбрасываться при перестроении контейнера, поэтому переменные, заданные в ~/.bashrc файле, не будут сохраняться при перестроении. Дополнительные сведения см. в разделе "Запрет автоматического удаления временных файлов".

Для всех пространств кода для репозитория

Существует три способа настройки постоянных пользовательских переменных среды для всех пространств кода, создаваемых для репозитория:

  • Файл конфигурации можно изменить devcontainer.json для репозитория.
  • Вы можете использовать пользовательский файл Dockerfile.
  • Секреты среды разработки можно использовать.

devcontainer.json Изменение файла конфигурации для репозитория

Измените devcontainer.json файл конфигурации для репозитория и используйте remoteEnv свойство, чтобы задать значение переменной среды:

{
  "remoteEnv": {
    "VARNAME": "value"
  }
}

Используйте этот метод только для значений, которые вы рады зафиксировать в репозитории как открытый текст. Для конфиденциальных значений, таких как маркеры доступа, используйте секреты среды разработки.

Переменная среды будет задана в процессе удаленного сервера редактора и будет доступна для вложенных процессов этого удаленного процесса сервера, таких как терминалы и сеансы отладки. Однако переменная не будет доступна более широко внутри контейнера. Этот метод полезен, если не требуется задать переменную среды для других фоновых процессов, выполняемых при запуске, и если вы используете предварительно созданный образ и не имеете или хотите пользовательский файл Dockerfile.

Этот параметр вступит в силу при перестроении контейнера или создании нового пространства кода после отправки этого изменения в репозиторий. Дополнительные сведения о применении изменений конфигурации к пространству кода см. в разделе Основные сведения о контейнерах разработки.

Использование пользовательского файла Dockerfile

Если вы используете пользовательский файл Dockerfile, можно задать переменную среды там, добавив ENV VARNAME=value.

Этот метод полезен, если у вас уже есть Dockerfile и требуется задать переменную на уровне контейнера.

Этот параметр вступит в силу при перестроении контейнера или создании нового пространства кода после отправки этого изменения в репозиторий. Дополнительные сведения о применении изменений конфигурации к пространству кода см. в разделе Основные сведения о контейнерах разработки.

Использование секретов среды разработки

Секреты среды разработки можно использовать для GitHub Codespaces для задания пользовательских переменных для пространств кода, созданных для репозитория. Дополнительные сведения см. в разделе Управление секретами конкретной учетной записи для GitHub Codespaces.

Этот метод следует использовать для значений переменных среды, которые не нужно зафиксировать в репозитории как открытый текст.

Этот параметр вступит в силу при следующем создании пространства кода для этого репозитория или при перезапуске существующего пространства кода.

Для всех создаваемых пространств кода

Если вы хотите задать персонализированную переменную среды для всех создаваемых пространств кода, можно задать это с помощью файла в dotfiles репозитории. Например, добавьте VARNAME=value в .bash_profile файл. Переменные среды, заданные в dotfile, являются личными для вас и не задаются для других пользователей. Дополнительные сведения о Dotfiles см. в разделе Персонализация GitHub Codespaces для вашей учетной записи.

Предотвращение автоматического удаления временных файлов

При создании пространства кода репозиторий клонируется в /workspaces каталог в пространстве кода. Это постоянный каталог, подключенный к контейнеру. Все изменения, внесенные в этот каталог, включая редактирование, добавление или удаление файлов, сохраняются при остановке и запуске пространства кода, а также при перестроении контейнера в пространстве кода.

/workspaces За пределами каталога пространство кода содержит структуру каталогов Linux, которая зависит от образа контейнера разработки, используемого для сборки пространства кода. Вы можете добавлять файлы или вносить изменения в файлы за пределами /workspaces каталога. Например, можно установить новые программы или настроить конфигурацию оболочки в файле, ~/.bashrcнапример. В качестве пользователя, не являющегося корневым, вы не можете автоматически записывать доступ к определенным каталогам, но большинство образов разрешают корневой доступ к этим каталогам с sudo помощью команды.

За пределами /workspaces``/tmp каталога каталоги в пространстве кода привязаны к жизненному циклу контейнера. Это означает, что все внесенные изменения сохраняются при остановке и запуске пространства кода, но не сохраняются при перестроении контейнера. Сведения о создании асимметричных ссылок для сохранения данных за пределами каталога см. в /workspaces разделе Перестроение контейнера в пространстве кода.

/tmp Каталог является исключением, так как он подключен к контейнеру, но он не является постоянным. Поэтому содержимое /tmp каталога сохраняется при перестроении, но очищается каждый раз при остановке пространства кода. Например, /tmp каталог очищается при истечении времени ожидания сеанса пространства кода после периода бездействия. Дополнительные сведения см. в разделе Настройка периода ожидания для GitHub Codespaces.

Если у вас есть временные файлы, которые вы хотите быть доступными при следующем запуске пространства кода, не сохраните их в каталоге /tmp .

Дополнительные материалы