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

Основные сведения о контейнерах разработки

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

Кто может использовать эту функцию

People with write permissions to a repository can create or edit the codespace configuration.

Сведения о контейнерах разработки

Контейнеры разработки или контейнеры разработки — это контейнеры Docker, специально настроенные для предоставления полнофункциональный среды разработки. Каждый раз, когда вы работаете в среде codespace, вы используете контейнер разработки на виртуальной машине.

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

Файлы конфигурации для контейнера разработки содержатся в каталоге .devcontainer в репозитории. Для добавления файлов конфигурации можно использовать Visual Studio Code. Можно выбрать одну из стандартных конфигураций для различных типов проектов. Их можно использовать без дополнительной настройки, либо можно изменить конфигурации для более точной настройки среды, которую они создают. Дополнительные сведения см. в разделе Использование предопределенной конфигурации контейнера разработки.

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

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

При создании codespace на основе шаблона можно начать с одного или нескольких файлов конфигурации контейнера разработки в рабочей области. Чтобы дополнительно настроить среду, можно добавить или удалить параметры из этих файлов и перестроить контейнер, чтобы применить изменения к пространству кода, в которой вы работаете. Если вы публикуете codespace в репозитории на GitHub Enterprise Cloud, все пространства кода, созданные из этого репозитория, будут совместно использовать определенную конфигурацию. Дополнительные сведения см. в разделах Применение изменений конфигурации к codespace и Создание codespace на основе шаблона.

devcontainer.json

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

Если вы создаете codespace из репозитория без devcontainer.json файла или начинаете с пустого шаблона GitHub, используется конфигурация контейнера разработки по умолчанию. Дополнительные сведения см. в разделе Использование конфигурации контейнера разработки по умолчанию.

Файл devcontainer.json обычно находится в каталоге .devcontainer репозитория. Кроме того, его можно расположить непосредственно в корне репозитория, в этом случае имя файла должно начинаться с точки: .devcontainer.json.

Если вы хотите выбирать конфигурации контейнеров разработки в репозитории, все альтернативы файлу .devcontainer/devcontainer.json (или .devcontainer.json) должны находиться в собственном подкаталоге по пути .devcontainer/SUBDIRECTORY/devcontainer.json. Например, вы можете иметь на выбор две конфигурации:

  • .devcontainer/database-dev/devcontainer.json
  • .devcontainer/gui-dev/devcontainer.json

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

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

Сведения о параметрах и свойствах, которые можно задать в файле, см. в devcontainer.json разделе Спецификация на веб-сайте "Контейнеры разработки".

Использование файла devcontainer.json

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

Вы можете персонализировать свою среду codespace с помощью файлов с точкой и синхронизации параметров. Дополнительные сведения см. в разделе Персонализация GitHub Codespaces для учетной записи.

Dockerfile

Dockerfile можно добавить как часть конфигурации контейнера разработки.

Dockerfile — это текстовый файл с инструкциями, необходимыми для создания образа контейнера Docker. Этот образ используется для создания контейнера разработки каждый раз, когда кто-то создает codespace с помощью файла devcontainer.json, который ссылается на этот файл Dockerfile. Инструкции в Dockerfile обычно начинаются со ссылки на родительский образ, на котором будет основан новый образ. За этим следуют команды, которые выполняются в процессе создания образа, например для установки пакетов программного обеспечения.

Файл Dockerfile для контейнера разработки обычно находится в папке .devcontainer вместе с файлом devcontainer.json, который на него ссылается.

Примечание. В качестве альтернативы использованию Dockerfile можно использовать свойство image в файле devcontainer.json для ссылки непосредственно на существующий образ, который вы хотите использовать. Указанный здесь образ должен быть разрешен любой заданной политикой образов организации. Дополнительные сведения см. в разделе Ограничение базового образа для codespaces. Если ни файл Dockerfile ни образ не найдены, используется образ контейнера по умолчанию. Дополнительные сведения см. в разделе Использование конфигурации контейнера разработки по умолчанию.

Простой пример файла Dockerfile

В следующем примере используются четыре инструкции:

ARG определяет переменную времени сборки.

FROM указывает родительский образ, на котором будет основан создаваемый образ Docker.

COPY копирует файл и добавляет его в файловую систему.

RUN обновляет списки пакетов и запускает сценарий. Вы также можете использовать инструкцию RUN для установки программного обеспечения, как показано в комментариях. Чтобы выполнить несколько команд, используйте оператор && для объединения команд в одну инструкцию RUN.

Dockerfile
ARG VARIANT="16-buster"
FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT}

# [Optional] Uncomment if you want to install an additional version of node using nvm
# ARG EXTRA_NODE_VERSION=10
# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}"

# [Optional] Uncomment if you want to install more global node modules
# RUN su node -c "npm install -g <your-package-list-here>"

COPY library-scripts/github-debian.sh /tmp/library-scripts/
RUN apt-get update && bash /tmp/library-scripts/github-debian.sh

Дополнительные сведения об инструкциях в файле Dockerfile см. в Справочнике по Dockerfile в документации по Docker.

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

Чтобы использовать файла Dockerfile в рамках конфигурации контейнера разработки, необходимо сделать ссылку на него в файле devcontainer.json с помощью свойства dockerfile.

JSON
{
  ...
  "build": { "dockerfile": "Dockerfile" },
  ...
}

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

Использование конфигурации контейнера разработки по умолчанию

Если вы не добавляете конфигурацию контейнера разработки в репозиторий или если в конфигурации не указан образ для использования, GitHub создает контейнер из образа Linux по умолчанию. Этот образ Linux включает ряд версий среды выполнения для популярных языков, таких как Python, Node, PHP, Java, Go, C++, Ruby и .NET Core/C#. Используются последние или LTS-выпуски этих языков. Существуют также средства для поддержки обработки и анализа данных и машинного обучения, таких как JupyterLab и Conda. Этот образ также включает другие средства разработчика и служебные программы, такие как Git, GitHub CLI, yarn, openssh и vim. Чтобы просмотреть список всех языков, сред выполнения и средств, которые включены, используйте команду devcontainer-info content-url в терминале codespace и перейдите по URL-адресу, который выведет команда.

Сведения о том, что входит в образ Linux по умолчанию, см. в репозитории devcontainers/images .

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

Примечание. GitHub не взимает плату за хранение контейнеров, созданных на основе образа Linux по умолчанию. Дополнительные сведения о выставлении счетов за хранилище codespace см. в разделе Сведения о выставлении счетов за GitHub Codespaces. Сведения о том, как проверить, было ли создано codespace на основе образа по умолчанию, см. в разделе "Максимальное использование включенных ресурсов".

Использование предопределенной конфигурации контейнера разработки

Если вы используете Codespaces в Visual Studio Code или в веб-браузере, можно создать конфигурацию контейнера разработки для репозитория, выбрав из списка предопределенных конфигураций. Эти конфигурации предоставляют общие настройки для конкретных типов проектов и могут помочь вам быстро приступить к работе с конфигурацией, которая уже имеет соответствующие параметры контейнера, параметры Visual Studio Code и расширения Visual Studio Code, которые необходимо установить.

Использование предопределенной конфигурации — это отличная идея, если требуется дополнительная расширяемость. Вы также можете начать с предопределенной конфигурации и изменять ее по мере необходимости в процессе развития проекта. Дополнительные сведения об определениях предопределенных контейнеров разработки см. в репозитории devcontainers/images .

Можно добавить предопределенную конфигурацию контейнера разработки либо во время работы в codespace, либо при локальной работе с репозиторием. Для этого в VS Code во время работы локально и без подключения к codespace необходимо установить и включить расширение Dev Containers. Дополнительные сведения об этом расширении см. в VS Code Marketplace. В следующей процедуре описывается процесс использования codespace. Действия в VS Code, если вы не подключены к codespace, очень похожи.

  1. Получите доступ к Visual Studio Code Command Palette (команда+ SHIFT+P / , CTRL+SHIFT SHIFT+P), а затем начните вводить "контейнер разработки". Щелкните Codespaces: Configure Dev Container (Кодовые пространства: настройка контейнера разработки).

    Снимок экрана: параметр "Codespaces: настройка контейнера разработки"

  2. Нажмите кнопку Начать с нуля.

    Снимок экрана: параметр "Начать с нуля"

  3. Щелкните Показать все определения.

    Снимок экрана: параметр "Показать все определения"

  4. Щелкните определение, которое вы хотите использовать.

    Снимок экрана: список стандартных определений контейнеров

  5. Следуйте инструкциям по настройке определения.

  6. Нажмите кнопку ОК.

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

    Снимок экрана: запрос на "Перестроить сейчас"

Добавление дополнительных функций в файл devcontainer.json

Функции — это автономные единицы кода установки и конфигурации контейнера разработки, предназначенные для работы в широком диапазоне базовых образов контейнеров. Функции можно использовать для быстрого добавления инструментов, сред выполнения или библиотек в образ codespace. Дополнительные сведения см. в разделе Доступные функции и спецификации функций на веб-сайте "Контейнеры разработки".

Вы можете добавить компоненты в devcontainer.json файл из VS Code или из репозитория в GitHub.com. Дополнительные сведения см. в разделе Добавление компонентов в devcontainer.json файл.

Создание настраиваемой конфигурации контейнера разработки

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

  • Если вы добавляете один файл devcontainer.json, который будет использоваться всеми, кто создает codespace из репозитория, создайте файл в каталоге .devcontainer в корне репозитория.

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

    Примечания

    • Вы не можете найти файлы devcontainer.json в каталогах более чем на один уровень ниже .devcontainer. Например, файл в каталоге .devcontainer/teamA/devcontainer.json будет работать, а в .devcontainer/teamA/testing/devcontainer.json — нет.

    • Когда пользователи создают codespace с помощью кнопки Использовать этот шаблон в репозитории шаблонов, им не будет предоставлен выбор между конфигурациями. Codespace будет построено на основе конфигурации по умолчанию, определенной в .devcontainer/devcontainer.jsonили в .devcontainer.json корне репозитория. Дополнительные сведения см. в разделе Настройка репозитория шаблонов для GitHub Codespaces.

    Если в репозитории найдено несколько файлов devcontainer.json, они будут показаны на странице параметров создания codespace. Дополнительные сведения см. в разделе Создание codespace для репозитория.

    Снимок экрана: выбор файлов конфигурации

devcontainer.json Добавление файла

Если у devcontainer.json вас еще нет файла в репозитории, его можно быстро добавить из GitHub.com.

  1. Перейдите в репозиторий и щелкните раскрывающийся список Code (Код).

  2. На вкладке Codespaces щелкните многоточие (...), а затем выберите Настроить контейнер разработки.

    Снимок экрана: раскрывающийся список "Код" с выделенным элементом "Настройка контейнера разработки"

В редакторе откроется новый .devcontainer/devcontainer.json файл. Файл будет содержать некоторые начальные свойства, включая features объект, в который можно добавить новые инструменты, библиотеки или среды выполнения. Дополнительные сведения см. в разделе Добавление компонентов в devcontainer.json файл.

Если репозиторий уже содержит один или несколько devcontainer.json файлов, щелкните Настроить контейнер разработки , чтобы открыть существующий devcontainer.json файл с наивысшим приоритетом в соответствии со спецификацией на веб-сайте Контейнеры разработки.

Выбор конфигурации по умолчанию во время создания пространства кода

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

Снимок экрана: выбор конфигурации по умолчанию

Изменение файла devcontainer.json

Можно добавлять и изменять поддерживаемые ключи конфигурации в файле devcontainer.json, чтобы указать аспекты среды codespace, например, какие расширения VS Code будут установлены. Сведения о параметрах и свойствах, которые можно задать в файле, см. в devcontainer.json разделе Спецификация на веб-сайте "Контейнеры разработки".

Файл devcontainer.json записывается в формате JSONC (JSON с комментариями). Это позволяет включать комментарии в файл конфигурации. Дополнительные сведения см. в разделе Редактирование JSON в VS Code в документации по VS Code.

Примечание. Если вы используете анализатор кода для проверки файла devcontainer.json, убедитесь, что для него задано значение JSONC, а не JSON. В противном случае комментарии будут отображаться как ошибки.

Параметры интерфейса для VS Code

Параметры интерфейса для VS Code можно настроить с тремя областями: Рабочая область, Удаленные [пространства кода] и Пользователь. Эти области можно просмотреть в редакторе параметров VS Code.

Снимок экрана: выбор областей в редакторе параметров

Если параметр определен в нескольких областях, в первую очередь приоритет имеют параметры рабочей области, затем параметры удаленного репозитория [Codespaces] , а затем пользователя.

Параметры интерфейса по умолчанию для VS Code можно определить в двух местах.

  • Параметры интерфейса, определенные в .vscode/settings.json файле в репозитории, применяются как параметры области рабочей области в codespace.
  • Параметры интерфейса, определенные в settings ключе в devcontainer.json файле, применяются как удаленные [Codespaces] параметры в codespace.

Применение изменений конфигурации к среде codespace

Изменения конфигурации будут применены при следующем создании codespace. Однако вы можете применить изменения к существующему пространству кода, перестроив контейнер. Это можно сделать в codespace в веб-клиенте или классическом приложении VS Code или использовать GitHub CLI.

Перестроение контейнера разработки в веб-клиенте или классическом приложении VS Code

  1. Получите доступ к VS Code Command Palette (команда+ SHIFT+P / , CTRL+SHIFT P+), а затем начните вводить "rebuild". Щелкните Codespaces: Перестроение контейнера.

    Снимок экрана: команда "Перестроить контейнер" в палитре команд

    Совет: Иногда может потребоваться выполнить полную перестройку, чтобы очистить кэш и перестроить контейнер со свежими образами. Дополнительные сведения см. в разделе Выполнение полного перестроения контейнера.

  2. Если изменения в конфигурации контейнера разработки приводят к ошибке контейнера, codespace запустится в режиме восстановления и появится сообщение об ошибке.

    Снимок экрана: сообщение об ошибке о режиме восстановления

    • Диагностируйте проблему путем просмотра журналов создания. Для этого нажмите кнопку Просмотр журнала создания.
    • Чтобы устранить ошибки, выявленные в журналах, обновите файл devcontainer.json.
    • Чтобы применить изменения, перестройте контейнер.

Использование GitHub CLI для перестроения контейнера разработки

Если вы изменили конфигурацию контейнера разработки за пределами VS Code (например, в GitHub.com или в интегрированной среде разработки JetBrains), вы можете использовать GitHub CLI для перестроения контейнера разработки для существующего пространства кода.

  1. В окне терминала введите следующую команду.

    gh cs rebuild
    

    В списке перечислены пространства кода.

  2. Используйте клавиши со стрелками на клавиатуре, чтобы выделить требуемое кодовое пространство, а затем нажмите клавишу ВВОД.

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