34 KiB
title, intro, permissions, redirect_from, versions, type, topics, ms.openlocfilehash, ms.sourcegitcommit, ms.translationtype, ms.contentlocale, ms.lasthandoff, ms.locfileid
| title | intro | permissions | redirect_from | versions | type | topics | ms.openlocfilehash | ms.sourcegitcommit | ms.translationtype | ms.contentlocale | ms.lasthandoff | ms.locfileid | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Основные сведения о контейнерах разработки | При работе в codespace среда, в которой вы работаете, создается с помощью контейнера разработки, размещенного на виртуальной машине. | People with write permissions to a repository can create or edit the codespace configuration. |
|
|
how_to |
|
646f8068e68040f1d12f8155c3ba9e2bdb84c2ca | 7fb7ec2e66 |
MT | ru-RU | 11/29/2022 | 148185094 |
Сведения о контейнерах разработки
Контейнеры разработки или контейнеры разработки — это контейнеры Docker, специально настроенные для предоставления полнофункциональный среды разработки. Каждый раз, когда вы работаете в среде codespace, вы используете контейнер разработки на виртуальной машине.
Можно настроить контейнер разработки для репозитория, чтобы codespace, созданные для этого репозитория, дали вам специализированную среду разработки со всеми инструментами и средами выполнения, которые необходимо использовать для конкретного проекта. Если вы не определили конфигурацию в репозитории, {% data variables.product.prodname_github_codespaces %} использует конфигурацию по умолчанию, которая содержит множество общих средств, которые может потребоваться команде для разработки проекта. Дополнительные сведения см. в разделе Использование конфигурации контейнера разработки по умолчанию.
Файлы конфигурации для контейнера разработки содержатся в каталоге .devcontainer в репозитории. Для добавления файлов конфигурации можно использовать {% data variables.product.prodname_vscode %}. Можно выбрать одну из стандартных конфигураций для различных типов проектов. Их можно использовать без дополнительной настройки, либо можно изменить конфигурации для более точной настройки среды, которую они создают. Дополнительные сведения см. в разделе Использование предопределенной конфигурации контейнера разработки.
Кроме того, можно добавлять собственные пользовательские файлы конфигурации. Дополнительные сведения см. в разделе Создание настраиваемой конфигурации контейнера разработки.
Можно определить одну конфигурацию контейнера разработки для репозитория, разные конфигурации для разных ветвей или несколько конфигураций. При наличии нескольких конфигураций пользователи могут выбрать предпочтительную конфигурацию при создании среды codespace. Это особенно полезно для больших репозиториев, содержащих исходный код на разных языках программирования или для различных проектов. Можно создать набор конфигураций, которые позволяют разным командам работать в codespace, настроенном соответствующим образом для выполняемой ими работы.
При создании codespace на основе шаблона можно начать с одного или нескольких файлов конфигурации контейнера разработки в рабочей области. Чтобы дополнительно настроить среду, можно добавить или удалить параметры из этих файлов и перестроить контейнер, чтобы применить изменения к пространству кода, в которой вы работаете. Если вы публикуете codespace в репозитории на {% data variables.product.product_name %}, все пространства кода, созданные из этого репозитория, будут совместно использовать определенную конфигурацию. Дополнительные сведения см. в разделах Применение изменений конфигурации к codespace и Создание codespace на основе шаблона.
devcontainer.json
Основным файлом в конфигурации контейнера разработки является файл devcontainer.json. Этот файл можно использовать для определения сред codespace, созданных для репозитория. Содержимое этого файла определяет контейнер разработки, который может включать платформы, средства, расширения и перенаправление портов. Файл devcontainer.json обычно содержит ссылку на файл Dockerfile, который обычно находится рядом с файлом devcontainer.json.
Если вы создаете пространство кода из репозитория без devcontainer.json файла или начинаете с пустого шаблона {% data variables.product.company_short %}, используется конфигурация контейнера разработки по умолчанию. Дополнительные сведения см. в разделе Использование конфигурации контейнера разработки по умолчанию.
Файл 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 для репозитория.
{% data reusables.codespaces.more-info-devcontainer %}
Использование файла devcontainer.json
Рекомендуется рассматривать файл devcontainer.json как предоставление "настройки", а не "персонализации". Следует включать только те вещи, которые всем пользователям, работающим с вашей базой кода, необходимы в качестве стандартных элементов среды разработки, а не как личные предпочтения. Такие вещи, как анализатор кода, полезно стандартизировать и требовать, чтобы они были установлены у всех, поэтому они хорошо подходят для включения в файл devcontainer.json. Такие элементы, как декораторы пользовательского интерфейса или темы, — это личный выбор каждого, и их не следует помещать в файл devcontainer.json.
Вы можете персонализировать свою среду codespace с помощью файлов с точкой и синхронизации параметров. Дополнительные сведения см. в разделе Персонализация {% data variables.product.prodname_github_codespaces %} для учетной записи.
Dockerfile
Dockerfile можно добавить как часть конфигурации контейнера разработки.
Dockerfile — это текстовый файл с инструкциями, необходимыми для создания образа контейнера Docker. Этот образ используется для создания контейнера разработки каждый раз, когда кто-то создает codespace с помощью файла devcontainer.json, который ссылается на этот файл Dockerfile. Инструкции в Dockerfile обычно начинаются со ссылки на родительский образ, на котором будет основан новый образ. За этим следуют команды, которые выполняются в процессе создания образа, например для установки пакетов программного обеспечения.
Файл Dockerfile для контейнера разработки обычно находится в папке .devcontainer вместе с файлом devcontainer.json, который на него ссылается.
{% note %}
Примечание. В качестве альтернативы использованию Dockerfile можно использовать свойство image в файле devcontainer.json для ссылки непосредственно на существующий образ, который вы хотите использовать. Указанный здесь образ должен быть разрешен любой заданной политикой образов организации. Дополнительные сведения см. в разделе Ограничение базового образа для codespace. Если ни файл Dockerfile ни образ не найдены, используется образ контейнера по умолчанию. Дополнительные сведения см. в разделе Использование конфигурации контейнера разработки по умолчанию.
{% endnote %}
Простой пример файла 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" },
...
}
Если вы хотите использовать существующую оркестрацию контейнеров в контейнере разработки, доступны различные параметры. Дополнительные сведения см. в разделе "Параметры оркестрации" статьи Спецификация на веб-сайте "Контейнеры разработки".
Использование конфигурации контейнера разработки по умолчанию
Если вы не определили конфигурацию в репозитории, {% data variables.product.prodname_dotcom %} создает codespace с помощью образа 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 .
Конфигурация по умолчанию является хорошим вариантом, если вы работаете над небольшим проектом, использующим языки и средства, которые предоставляет {% data variables.product.prodname_github_codespaces %}.
Использование предопределенной конфигурации контейнера разработки
Если вы используете {% data variables.product.prodname_codespaces %} в {% data variables.product.prodname_vscode %} или в веб-браузере, вы можете создать конфигурацию контейнера разработки для репозитория, выбрав из списка предопределенных конфигураций. Эти конфигурации предоставляют общие параметры для конкретных типов проектов и помогут вам быстро приступить к работе с конфигурацией, которая уже имеет соответствующие параметры контейнера, параметры {% data variables.product.prodname_vscode %} и расширения {% data variables.product.prodname_vscode %}, которые необходимо установить.
Использование предопределенной конфигурации — это отличная идея, если требуется дополнительная расширяемость. Вы также можете начать с предопределенной конфигурации и изменять ее по мере необходимости в процессе развития проекта. Дополнительные сведения об определениях предопределенных контейнеров разработки см. в репозитории devcontainers/images .
Можно добавить предопределенную конфигурацию контейнера разработки либо во время работы в codespace, либо при локальной работе с репозиторием. Чтобы сделать это в {% data variables.product.prodname_vscode_shortname %} во время работы локально и не подключены к codespace, необходимо установить и включить расширение Dev Containers. Дополнительные сведения об этом расширении см. в {% data variables.product.prodname_vs_marketplace_shortname %}. В следующей процедуре описывается процесс использования codespace. Действия в {% data variables.product.prodname_vscode_shortname %}, если вы не подключены к codespace, очень похожи.
{% data reusables.codespaces.command-palette-container %}
-
Щелкните определение, которое вы хотите использовать.
-
Следуйте инструкциям по настройке определения. Дополнительные сведения о параметрах настройки определения см. в разделе Добавление дополнительных функций в файл
devcontainer.json. -
Нажмите кнопку ОК.
-
Если вы работаете в codespace, примените изменения, нажав кнопку Перестроить в сообщении в правом нижнем углу окна. Дополнительные сведения о перестроении контейнера см. в разделе Применение изменений к конфигурации.
Добавление дополнительных функций в файл devcontainer.json
{% data reusables.codespaces.about-features %} Дополнительные сведения см. в разделе Добавление компонентов в devcontainer.json файл.
Создание настраиваемой конфигурации контейнера разработки
Если ни одна из предопределенных конфигураций не соответствует вашим потребностям, можно создать пользовательскую конфигурацию, написав собственный файл devcontainer.json.
-
Если вы добавляете один файл
devcontainer.json, который будет использоваться всеми, кто создает codespace из репозитория, создайте файл в каталоге.devcontainerв корне репозитория. -
Если вы хотите предложить пользователям выбор конфигурации, можно создать несколько пользовательских файлов
devcontainer.json, каждый из которых должен находится в отдельном подкаталоге каталога.devcontainer.{% note %}
Примечания
- Вы не можете найти файлы
devcontainer.jsonв каталогах более чем на один уровень ниже.devcontainer. Например, файл в каталоге.devcontainer/teamA/devcontainer.jsonбудет работать, а в.devcontainer/teamA/testing/devcontainer.json— нет. - {% data reusables.codespaces.configuration-choice-templates %} Дополнительные сведения см. в разделе Настройка репозитория шаблонов для {% data variables.product.prodname_github_codespaces %}.
{% endnote %}
Если в репозитории найдено несколько файлов
devcontainer.json, они будут показаны на странице параметров создания codespace. Дополнительные сведения см. в разделе Создание codespace для репозитория. - Вы не можете найти файлы
devcontainer.json Добавление файла
Если у devcontainer.json вас еще нет файла в репозитории, его можно быстро добавить из {% data variables.product.prodname_dotcom_the_website %}.
-
Перейдите в репозиторий и щелкните раскрывающийся список {% octicon "code" aria-label="The code icon" %} Code (Код).
-
На вкладке Codespaces щелкните многоточие (...), а затем выберите Настроить контейнер разработки.
В редакторе откроется новый .devcontainer/devcontainer.json файл. Файл будет содержать некоторые начальные свойства, включая features объект, в который можно добавить новые инструменты, библиотеки или среды выполнения. Дополнительные сведения см. в разделе Добавление компонентов в devcontainer.json файл.
Если репозиторий уже содержит один или несколько devcontainer.json файлов, щелкните Настроить контейнер разработки , чтобы открыть существующий devcontainer.json файл с наивысшим приоритетом в соответствии со спецификацией containers.dev.
Выбор конфигурации по умолчанию во время создания пространства кода
Если файл .devcontainer/devcontainer.json или .devcontainer.json существует, он будет выбором по умолчанию в списке доступных файлов конфигурации при создании пространства кода. Если ни один из файлов не существует, будет выбрана конфигурация контейнера разработки по умолчанию.
Изменение файла devcontainer.json
Можно добавлять и изменять поддерживаемые ключи конфигурации в файле devcontainer.json, чтобы указать аспекты среды codespace, например, какие расширения {% data variables.product.prodname_vscode_shortname %} будут установлены. {% data reusables.codespaces.more-info-devcontainer %}
Файл devcontainer.json записывается в формате JSONC (JSON с комментариями). Это позволяет включать комментарии в файл конфигурации. Дополнительные сведения см. в разделе Редактирование JSON в {% data variables.product.prodname_vscode_shortname %} в документации по {% data variables.product.prodname_vscode_shortname %}.
{% note %}
Примечание. Если вы используете анализатор кода для проверки файла devcontainer.json, убедитесь, что для него задано значение JSONC, а не JSON. В противном случае комментарии будут отображаться как ошибки.
{% endnote %}
Параметры интерфейса для {% data variables.product.prodname_vscode_shortname %}
Параметры интерфейса для {% data variables.product.prodname_vscode_shortname %} можно настроить с тремя областями: Рабочая область, Удаленные [пространства кода] и Пользователь. Эти области можно просмотреть в редакторе параметров {% data variables.product.prodname_vscode_shortname %}.
Если параметр определен в нескольких областях, в первую очередь приоритет имеют параметры рабочей области, затем параметры удаленного репозитория [Codespaces] , а затем пользователя.
Параметры интерфейса по умолчанию для {% data variables.product.prodname_vscode_shortname %} можно определить в двух местах.
- Параметры интерфейса, определенные в
.vscode/settings.jsonфайле в репозитории, применяются как параметры области рабочей области в codespace. - Параметры интерфейса, определенные в
settingsключе вdevcontainer.jsonфайле, применяются как удаленные [Codespaces] параметры в codespace.
Применение изменений конфигурации к среде codespace
Изменения конфигурации будут применены при следующем создании codespace. Однако вы можете применить изменения к существующему пространству кода, перестроив контейнер. Это можно сделать в codespace в веб-клиенте или классическом приложении {% data variables.product.prodname_vscode_shortname %} или использовать {% data variables.product.prodname_cli %}.
Перестроение контейнера разработки в веб-клиенте или классическом приложении {% data variables.product.prodname_vscode_shortname %}
{% data reusables.codespaces.rebuild-command %}
-
{% data reusables.codespaces.recovery-mode %}
- Диагностируйте проблему путем просмотра журналов создания. Для этого нажмите кнопку Просмотр журнала создания.
- Чтобы устранить ошибки, выявленные в журналах, обновите файл
devcontainer.json. - Чтобы применить изменения, перестройте контейнер.
Использование {% data variables.product.prodname_cli %} для перестроения контейнера разработки
Если вы изменили конфигурацию контейнера разработки за пределами VS Code (например, в {% data variables.product.prodname_dotcom_the_website %} или в интегрированной среде разработки JetBrains), вы можете использовать {% data variables.product.prodname_cli %} для перестроения контейнера разработки для существующего пространства кода.
-
В окне терминала введите следующую команду.
gh cs rebuildВ списке перечислены пространства кода.
-
Используйте клавиши со стрелками на клавиатуре, чтобы выделить требуемое кодовое пространство, а затем нажмите клавишу ВВОД.







