Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы, возможно, еще выполняется. Актуальные сведения см. в документации на английском языке.

Выполнение полного перестроения контейнера

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

Сведения о перестроении контейнера

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

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

  • GitHub Codespaces может повторно использовать образы в кэше, а не удалять их из реестров контейнеров.
  • Части конфигурации контейнера разработки, определяющие способ сборки контейнера, такие как функции контейнера разработки и инструкции Dockerfile, возможно, уже реализованы на уровнях образов в кэше, поэтому вам не придется ждать повторного запуска этих процессов. (Однако команды в конфигурации, которые выполняются после сборки контейнера, например onCreateCommand, будут выполняться снова.)

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

  • Необходимо убедиться, что настройка, определенная в конфигурации, не зависит от кэшированных образов и будет выполняться по мере необходимости, когда кто-то создает новое пространство кода на основе конфигурации. Например, зависимость могла быть удалена из базового образа с момента последнего извлечения в codespace.
  • Вы хотите освободить место на диске, используемое кэшем, например, если у вас мало места на диске или вы хотите свести к минимуму расходы на хранилище. Кэш образа может использовать значительный объем дискового пространства, если вы несколько раз меняли базовый образ, вносили большое количество итеративных изменений в конфигурацию или используете несколько контейнеров с Docker Compose.

Выполнение полного перестроения

Полное перестроение можно выполнить в Visual Studio Code.

  1. Получите доступ к VS Code Command Palette спомощью команды+ SHIFT+P (Mac) или CTRL+SHIFT+P (Windows/Linux).

  2. Начните вводить "Перестроение" и выберите Codespaces: Полный контейнер перестроения.

    Снимок экрана: параметр 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

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