Сведения о перестроении контейнера
При работе в codespace среда разработки представляет собой контейнер Docker, который выполняется на виртуальной машине. Если вы вносите изменения в конфигурацию контейнера разработки из codespace и хотите применить эти изменения к текущему codespace, необходимо перестроить контейнер.
По умолчанию при перестроении контейнера GitHub Codespaces ускорит процесс сборки, повторно используя кэшированные образы из предыдущих сборок контейнера. Обычно это самый быстрый способ реализации изменений в конфигурации контейнера разработки по следующим причинам.
- GitHub Codespaces может повторно использовать образы в кэше, а не удалять их из реестров контейнеров.
- Части конфигурации контейнера разработки, определяющие способ сборки контейнера, такие как функции контейнера разработки и инструкции Dockerfile, возможно, уже реализованы на уровнях образов в кэше, поэтому вам не придется ждать повторного запуска этих процессов. (Однако команды в конфигурации, которые выполняются после сборки контейнера, например
onCreateCommand
, будут выполняться снова.)
Иногда может потребоваться выполнить полную перестройку контейнера. При полном перестроении GitHub Codespaces очищает все контейнеры, образы и тома Docker из кэша, а затем перестраивает контейнер с новыми извлеченными образами. Вся настройка, определенная в конфигурации, будет выполняться снова, создавая новые слои образов. Вам может потребоваться выполнить полное перестроение после многих итераций перестроения контейнера с кэшируемыми образами в таких ситуациях, как показано ниже.
- Необходимо убедиться, что настройка, определенная в конфигурации, не зависит от кэшированных образов и будет выполняться по мере необходимости, когда кто-то создает новое пространство кода на основе конфигурации. Например, зависимость могла быть удалена из базового образа с момента последнего извлечения в codespace.
- Вы хотите освободить место на диске, используемое кэшем, например, если у вас мало места на диске или вы хотите свести к минимуму расходы на хранилище. Кэш образа может использовать значительный объем дискового пространства, если вы несколько раз меняли базовый образ, вносили большое количество итеративных изменений в конфигурацию или используете несколько контейнеров с Docker Compose.
Выполнение полного перестроения
Полное перестроение можно выполнить в Visual Studio Code.
-
Получите доступ к VS Code Command Palette спомощью команды+ SHIFT+P (Mac) или CTRL+SHIFT+P (Windows/Linux).
-
Начните вводить "Перестроение" и выберите Codespaces: Полный контейнер перестроения.
Сохранение данных при полном перестроении
Все файлы и папки, содержащиеся в каталоге /workspaces
codespace, всегда сохраняются при перестроении. Вам не нужно изменять параметры или добавлять конфигурацию, чтобы сохранить содержимое этого каталога в течение полного перестроения.
Если вы хотите сохранить файлы за пределами /workspaces
каталога при полном перестроении, можно создать в нужном расположении в контейнере символьную ссылку (символьную ссылку) на постоянный каталог. Например, в каталоге /workspaces/.devcontainer
можно создать каталог config
, который будет сохранен при перестроении. Затем вы можете связать символьной ссылкой каталог config
и его содержимое как postCreateCommand
в файле devcontainer.json
.
{
"image": "mcr.microsoft.com/vscode/devcontainers/base:alpine",
"postCreateCommand": ".devcontainer/postCreate.sh"
}
В приведенном ниже примере файла postCreate.sh
содержимое каталога config
связано символической ссылкой с домашним каталогом.
#!/bin/bash
ln -sf $PWD/.devcontainer/config $HOME/config && set +x