Сведения о контейнерах разработки
Контейнеры разработки или контейнеры разработки — это контейнеры Docker, специально настроенные для предоставления полнофункциональный среды разработки. Каждый раз, когда вы работаете в среде codespace, вы используете контейнер разработки на виртуальной машине.
Можно настроить контейнер разработки для репозитория, чтобы codespace, созданные для этого репозитория, дали вам специализированную среду разработки со всеми инструментами и средами выполнения, которые необходимо использовать для конкретного проекта. Если вы не определили конфигурацию в репозитории, GitHub Codespaces использует конфигурацию по умолчанию, которая содержит множество общих средств, которые может потребоваться команде для разработки проекта. Дополнительные сведения см. в разделе Использование конфигурации контейнера разработки по умолчанию.
Файлы конфигурации для контейнера разработки содержатся в каталоге .devcontainer
в репозитории. Для добавления файлов конфигурации можно использовать Visual Studio Code. Можно выбрать одну из стандартных конфигураций для различных типов проектов. Их можно использовать без дополнительной настройки, либо можно изменить конфигурации для более точной настройки среды, которую они создают. Дополнительные сведения см. в разделе Использование предопределенной конфигурации контейнера разработки.
Кроме того, можно добавлять собственные пользовательские файлы конфигурации. Дополнительные сведения см. в разделе Создание настраиваемой конфигурации контейнера разработки.
Можно определить одну конфигурацию контейнера разработки для репозитория, разные конфигурации для разных ветвей или несколько конфигураций. При наличии нескольких конфигураций пользователи могут выбрать предпочтительную конфигурацию при создании среды codespace. Это особенно полезно для больших репозиториев, содержащих исходный код на разных языках программирования или для различных проектов. Можно создать набор конфигураций, которые позволяют разным командам работать в codespace, настроенном соответствующим образом для выполняемой ими работы.
При создании codespace на основе шаблона можно начать с одного или нескольких файлов конфигурации контейнера разработки в рабочей области. Чтобы дополнительно настроить среду, можно добавить или удалить параметры из этих файлов и перестроить контейнер, чтобы применить изменения к пространству кода, в которой вы работаете. Если вы публикуете codespace в репозитории на GitHub, все пространства кода, созданные из этого репозитория, будут совместно использовать определенную конфигурацию. Дополнительные сведения см. в разделах Применение изменений конфигурации к 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
для ссылки непосредственно на существующий образ, который вы хотите использовать. Указанный здесь образ должен быть разрешен любой заданной политикой образов организации. Дополнительные сведения см. в разделе Ограничение базового образа для codespace. Если ни файл Dockerfile ни образ не найдены, используется образ контейнера по умолчанию. Дополнительные сведения см. в разделе Использование конфигурации контейнера разработки по умолчанию.
Простой пример файла Dockerfile
В следующем примере используются четыре инструкции:
ARG
определяет переменную времени сборки.
FROM
указывает родительский образ, на котором будет основан создаваемый образ Docker.
COPY
копирует файл и добавляет его в файловую систему.
RUN
обновляет списки пакетов и запускает сценарий. Вы также можете использовать инструкцию RUN
для установки программного обеспечения, как показано в комментариях. Чтобы выполнить несколько команд, используйте оператор &&
для объединения команд в одну инструкцию RUN
.
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
.
{
...
"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.
Использование предопределенной конфигурации контейнера разработки
Если вы используете Codespaces в Visual Studio Code или в веб-браузере, вы можете создать конфигурацию контейнера разработки для репозитория, выбрав из списка предопределенных конфигураций. Эти конфигурации предоставляют общие настройки для конкретных типов проектов и могут помочь вам быстро приступить к работе с конфигурацией, которая уже имеет соответствующие параметры контейнера, параметры Visual Studio Code и расширения Visual Studio Code, которые необходимо установить.
Использование предопределенной конфигурации — это отличная идея, если требуется дополнительная расширяемость. Вы также можете начать с предопределенной конфигурации и изменять ее по мере необходимости в процессе развития проекта. Дополнительные сведения об определениях предопределенных контейнеров разработки см. в репозитории devcontainers/images
.
Можно добавить предопределенную конфигурацию контейнера разработки либо во время работы в codespace, либо при локальной работе с репозиторием. Для этого в VS Code во время работы локально и без подключения к codespace необходимо установить и включить расширение "Контейнеры разработки". Дополнительные сведения об этом расширении см. в VS Code Marketplace. В следующей процедуре описывается процесс использования codespace. Действия в VS Code, если вы не подключены к codespace, очень похожи.
- Получите доступ к Дополнительные сведения см. в разделе Добавление компонентов в файл 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.
-
Перейдите в репозиторий и щелкните раскрывающийся список код .
-
На вкладке Codespaces щелкните многоточие (...), а затем выберите Настроить контейнер разработки.
В редакторе откроется новый .devcontainer/devcontainer.json
файл. Файл будет содержать некоторые начальные свойства, включая features
объект , в который можно добавить новые средства, библиотеки или среды выполнения. Дополнительные сведения см. в разделе Добавление компонентов в файл devcontainer.json.
Если репозиторий уже содержит один или несколько devcontainer.json
файлов, щелкните Настроить контейнер разработки , чтобы открыть существующий devcontainer.json
файл с наивысшим приоритетом в соответствии со спецификацией на веб-сайте "Контейнеры разработки".
Выбор конфигурации по умолчанию во время создания пространства кода
Если файл .devcontainer/devcontainer.json
или .devcontainer.json
существует, он будет выбором по умолчанию в списке доступных файлов конфигурации при создании пространства кода. Если ни один из файлов не существует, будет выбрана конфигурация контейнера разработки по умолчанию.
На следующем снимке экрана репозиторий не содержит .devcontainer/devcontainer.json
файлы или .devcontainer.json
, поэтому выбрана конфигурация контейнера разработки по умолчанию. Однако в подкаталогах каталога определены два альтернативных файла конфигурации .devcontainer
, поэтому они перечислены в качестве параметров.
Изменение файла 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 можно настроить с тремя областями: User, Remote [Codespaces] и Workspace. Эти области можно просмотреть в редакторе параметров VS Code.
Чтобы открыть редактор параметров, используйте сочетание клавиш Command+ (Mac) / CTRL+ (Linux/Windows).
Если параметр определен в нескольких областях, в первую очередь приоритет имеют параметры рабочей области, затем параметры удаленного репозитория [Codespaces] , а затем пользователя.
Параметры интерфейса по умолчанию для VS Code можно определить в двух местах.
- Параметры интерфейса,
.vscode/settings.json
определенные в файле в репозитории, применяются как параметры области рабочей области в codespace. - Параметры интерфейса, определенные в
settings
ключе вdevcontainer.json
файле , применяются в codespace как удаленные параметры [Codespaces].
Применение изменений конфигурации к среде codespace
Изменения в конфигурации будут применены при следующем создании codespace. Однако вы можете применить изменения к существующему пространству кода, перестроив контейнер. Это можно сделать в codespace в веб-клиенте или классическом приложении VS Code, или использовать GitHub CLI.
Примечание: При перестроении контейнера в codespace изменения, внесенные /workspaces
вне каталога, удаляются. Изменения, внесенные в /workspaces
каталог, который включает клон репозитория или шаблона, из которого вы создали codespace, сохраняются при перестроении. Дополнительные сведения см. в разделе Подробные сведения о GitHub Codespaces.
Перестроение контейнера разработки в веб-клиенте или классическом приложении VS Code
-
Получите доступ к VS Code Command Palette (shift+Command+P / CTRL+ SHIFTP),+ а затем начните вводить "rebuild". Щелкните Codespaces: Перестроить контейнер.
Совет: Иногда может потребоваться выполнить полную перестройку, чтобы очистить кэш и перестроить контейнер со свежими образами. Дополнительные сведения см. в разделе Перестроение контейнера в codespace.
- Диагностируйте проблему путем просмотра журналов создания. Для этого нажмите кнопку Просмотр журнала создания.
- Чтобы устранить ошибки, выявленные в журналах, обновите файл
devcontainer.json
. - Чтобы применить изменения, перестройте контейнер.
Использование GitHub CLI для перестроения контейнера разработки
Если вы изменили конфигурацию контейнера разработки за пределами VS Code (например, в GitHub.com или в интегрированной среде разработки JetBrains), вы можете использовать GitHub CLI для перестроения контейнера разработки для существующего пространства кода.
-
В окне терминала введите следующую команду.
gh codespace rebuild
В списке указаны ваши codespace.
-
Используйте клавиши со стрелками на клавиатуре, чтобы выделить необходимое пространство кода, а затем нажмите клавишу ВВОД.