Acerca de los contenedores dev
Los contenedores de desarrollo o contenedores dev son contenedores de Docker que se configuran específicamente para proporcionar un ambiente de desarrollo con características completas. Cuando sea que trabajes en un codespace, estarás utilizando un contenedor dev en una máquina virtual.
Puedes configurar el dev container en un repositorio para que el codespace que se cree para dicho repositorio te proporcione un ambiente de desarrollo personalizado, completo con todas las herramientas y tiempos de ejecución que necesitas para trabajar en un proyecto específico. Si no defines una configuración en el repositorio, entonces el Acerca de GitHub Codespaces utilizará una configuración predeterminada, la cual contendrá muchas de las herramientas comunes que podría necesitar tu equipo para el desarrollo de tu proyecto. Para obtener más información, consulta la sección "Utilizar la configuración predeterminada".
Los archivos de configuración de un contenedor dev se contienen en un directorio .devcontainer
en tu repositorio. Puedes utilizar Visual Studio Code para que agregue archivos de configuración para ti. Puedes elegir de entre una variedad de configuraciones predefinidas para varios tipos de proyecto. Puedes utilizarlos sin configuraciones subsecuentes o puedes editar las configuraciones para refinar el ambiente de desarrollo que producen. Para obtener más información, consulta la sección "Utilizar una configuración predefinida de contenedor dev".
Como alternativa, puedes agregar tus propios archivos de configuración persionalizados. Para obtener más información, consulta la sección "Crear una configuración personalizada de contenedor dev".
Puedes definir una sola configuración de contenedor dev para un repositorios, configuraciones diferentes para ramas diferentes o configuraciones múltiples. Cuando hay configuraciones múltiples disponibles, los usuarios pueden elegir su configuración preferida cuando crean un codespace. Esto es particularmente útil para los repositorios grandes que contienen código fuente en diversos lenguajes de programación o para proyectos diferentes. Puedes crear una variedad de configuraciones que permitan que los diferentes equipos trabajen en un codespace que se configuró adecuadamente para el trabajo que están realizando.
devcontainer.json
El archivo principal en una configuración de contenedor dev es devcontainer.json
. Puedes utilizar este archivo para determinar el ambiente de los codespaces que se crean para tu repositorio. El contenido de este archivo define un contenedor dev que puede incluir marcos de trabajo, herramientas, extensiones y reenvío de puertos. El archivo devcontainer.json
a menudo contiene una referencia a un Dockerfile, que habitualmente se ubica en todo el archivo devcontainer.json
.
Si no agregas un archivo devcontainer.json
a tu repositorio, se utilizará la configuración del contenedor dev predeterminado. Para obtener más información, consulta la sección "Utilizar la configuración predeterminada".
El archivo devcontainer.json
a menudo se ubica en el directorio .devcontainer
de tu repositorio. Como alternativa, puedes ubicarlo directamente en la raíz del repositorio, en cuyo caso el nombre de archivo debe comenzar con un punto: .devcontainer.json
.
SI quieres tener una variedad de configuraciones de contenedores dev en tu repositorio, cualquier alternativa al archivo .devcontainer/devcontainer.json
(o .devcontainer.json
) debe ubicarse en su propio subdirectorio en la ruta .devcontainer/SUBDIRECTORY/devcontainer.json
. Por ejemplo, podrías tener una elección de dos configuracones:
.devcontainer/database-dev/devcontainer.json
.devcontainer/gui-dev/devcontainer.json
Cuando tienes varios archivos de devcontainer.json
en tu repositorio, cada codespace se crea desde solo una de las configuraciones. No se pueden importar los ajustes ni heredarlos entre archivos de devcontainer.json
. Si un archivo de devcontainer.json
en un subdirectorio personalizado tiene archivos dependientes, tales como el Dockerfile o los scripts que ejecutan los comandos en dicho archivo devcontainer.json
, se recomienda que coloques ambos de estos archivos en el mismo directorio.
Para obtener más información sobre cómo elegir tu configuración preferida de contenedor dev cuando creas un codespace, consulta la sección "Crear un codespace".
For information about the settings and properties that you can set in a devcontainer.json
file, see "devcontainer.json reference" in the VS Code documentation.
Cómo utilizar el devcontainer.json
Es útil pensar que el archivo devcontainer.json
sirve para proporcionar "adaptación" en vez de "personalización". Solo debes incluir las cosas que necesiten todos los que trabajan en tus codespaces como elementos estándar del ambiente de desarrollo, no las que son preferencias personales. Las cosas como los limpiadores son buenas para estandarizar y para requerir que todos las tengan instaladas, así que es bueno incluirlas en tu archivo devcontainer.json
. Las cosas como los decoradores de interfaz de usuario o los temas son elecciones personales que no deberían ponerse en el archivo devcontainer.json
.
Puedes personalizar tus codespaces utilizando dotfiles y la sincronización de ajustes. Para obtener más información, consulta la sección "Personalizar los codespaces para tu cuenta".
Dockerfile
Puedes agregar un Dockerfile como parte de tu configuración de contenedor dev.
El Dockerfile es un archivo de texto que contiene las instrucciones necesarias para crear una imagen de contenedor de Docker. Esta imagen se utiliza para generar un contenedor de desarrollo cada que alguien crea un codespace utilizando el archivo devcontainer.json
que referencia a este Dockerfile. Las instrucciones en el Dockerfile habitualmente comienzan haciendo referencia a una imagen padre en la cual se basa la imagen que se creará. A esto le siguen los comandos que se ejecutan durante el proceso de creación de imagen, por ejemplo, para instalar paquetes de software.
El Dockerfile para un contenedor dev se ubica habitualmente en la carpeta -.devcontainer
, junto con el devcontainer.json
en el cual se referencia.
Nota: Como alternativa a utilizar un Dockerfile, puedes utilizar la propiedad image
en el archivo devcontainer.json
para referirte directamente a una imagen existente que quieras utilizar. Si no se encuentra un Dockerfile ni una imagen, entonces se utilizará la imagen de contenedor predeterminada. Para obtener más información, consulta la sección "Utilizar la configuración predeterminada".
Ejemplo de un Dockerfile simple
El siguiente ejemplo utiliza cuatro instrucciones:
ARG
define una variable de tiempo de compilación.
FROM
especifica la imagen padre en la cual se basará la imagen de Docker generada.
COPY
copia un archivo y lo agrega al sistema de archivos.
RUN
actualiza las listas de paquetes y ejecuta un script. También puedes utilizar una instrucción de RUN
para instalar software, tal como lo muestran las instrucciones en las cuales se comentó. Para ejecutar comandos múltiples, utiliza &&
para combinar los comandos en una sola declaración de 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
Para obtener más información sobre las instrucciones de los Dockerfiles, consulta la "referencia de Dockerfile" en la documentación de Docker.
Utilizar un Dockerfile
Para utilizar un Dockerfile como parte de una configuración de contenedor dev, referénciala en tu devcontainer.json
utilizando la propiedad dockerfile
.
{
...
"build": { "dockerfile": "Dockerfile" },
...
}
For more information about using a Dockerfile in a dev container configuration, see the VS Code documentation "Create a development container."
Utilizar la configuración de contenedor dev predeterminada
Si no defines una configuración en tu repositorio, GitHub creará un codespace utilizando una imagen de Linux predeterminada. This Linux image includes a number of runtime versions for popular languages like Python, Node, PHP, Java, Go, C++, Ruby, and .NET Core/C#. The latest or LTS releases of these languages are used. There are also tools to support data science and machine learning, such as JupyterLab and Conda. The image also includes other developer tools and utilities like Git, GitHub CLI, yarn, openssh, and vim. Para ver todos los lenguajes, tiempos de ejecución y herramientas que se incluyen, utiliza el comando devcontainer-info content-url
dentro de tu terminal del codespace y sigue la URL que este produce.
Como alternativa, para obtener más información sobre todo lo que incluye la imagen predeterminada de Linux, consulta el archivo más reciente del repositorio microsoft/vscode-dev-containers
.
La configuración predeterminada es una buena opción si estás trabajando en un proyecto pequeño que utilice los lenguajes y herramientas que proporciona Acerca de GitHub Codespaces.
Utilizar una configuración predeterminada de contenedor dev
Puedes elegir de entre una lista de configuraciones predeterminadas para crear una configuración de contenedor dev para tu repositorio. These configurations provide common setups for particular project types, and can help you quickly get started with a configuration that already has the appropriate container options, VS Code settings, and VS Code extensions that should be installed.
Utilizar una configuración predefinida es una gran idea si necesitas extensibilidad adicional. También puedes comenzar con una configuración predeterminada y modificarla conforme la necesites para tu proyecto.
Puedes agregar una configuración de contenedor dev predefinida ya sea mientras trabajas en un codespace o localmente en un repositorio.
-
Accede a la Paleta de comandos de Visual Studio Code (
Shift + Command + P
/Ctrl + Shift + P
) y comienza a teclear "dev container". Selecciona Codespaces: Agregar archivos de configuración del contenedor de desarrollo.... -
Haz clic en la definición que quieres utilizar.
-
Sigue los mensajes para personalizar tu definición. Para obtener más información sobre las opciones para personalizar tu definición, consulta la sección "Agregar características adicionales a tu archivo
devcontainer.json
". -
Haz clic en OK (aceptar).
-
Si estás trabajando en un codespace, aplica tus cambios haciendo clic en Recompilar ahora en el mensaje en la parte inferior derecha de la ventana. For more information about rebuilding your container, see "Applying changes to your configuration."
Agregar características adicionales a tu archivo de devcontainer.json
Nota: Esta característica se encuentra en beta y está sujeta a cambios.
Puedes agregar características a tu configuración predefinida de contenedor para personaliza las herramientas que están disponibles y extender la funcionalidad de tu espacio de trabajo sin tener que crear una configuración personalizada de contenedor dev desde cero. Por ejemplo, podrías utilizar una configuración predefinida de contenedor y agregar el CLI de GitHub. Puedes hacer que estas características adicionales estén disponibles para tu proyecto agregándolas a tu archivo de devcontainer.json
cuando configures los ajustes de dicho contenedor.
Puedes agregar algunas de las características más comunes seleccionándolas cuando configures tu contenedor predefinido. Para obtener más información sobre las características disponibles, consulta la librería de scripts en el repositorio vscode-dev-containers
.
-
Accede a la paleta de comandos (
Shift + Command + P
/Ctrl + Shift + P
) y luego comienza a teclear "configurar". Selecciona Codespaces: configurar las características del devcontainer. -
Actualiza tus selecciones de características y luego haz clic en OK.
-
Para aplicar los cambios, en la esquina inferior derecha de la pantalla, haz clic en Reconstruir ahora. Para obtener más información sobre cómo reconstruir tu contenedor, consulta la sección "Aplicar los cambios a tu configuración".
Crear una configuración de contenedor dev personalizada
Si ninguna de las configuraciones predefinidas satisface tus necesidades, puedes crear una configuración personalizada si escribes tu propio archivo devcontainer.json
.
-
Si estás agregando un solo archivo
devcontainer.json
que utilizará todo aquél que cree un codespace desde tu repositorio, crea el archivo dentro de un directorio de.devcontainer
en la raíz del repositorio. -
Si quieres ofrecer a los usuarios una elección de configuración, puedes crear archivos múltiples de
devcontainer.json
, cada uno ubicado dentro de un subdirectorio por separado del directorio.devcontainer
.Nota: No puedes ubicar tus archivos de
devcontainer.json
en los directorios a más de un nivel debajo de.devcontainer
. Por ejemplo, un archivo en la ruta.devcontainer/teamA/devcontainer.json
sí funcionaría, pero uno en.devcontainer/teamA/testing/devcontainer.json
, no.Si se encuentran archivos
devcontainer.json
múltiples en el repositorio, estos se listarán en la página de opciones de creación de codespaces. Para obtener más información, consulta la sección "Crear un codespace".
Selección de configuración predeterminada durante la creación de codespaces
Si existe el archivo .devcontainer/devcontainer.json
o .devcontainer.json
, este será la selección predeterminada en la lista de archivos de configuración disponibles cuando crees un codespace. Si no existe ninguno de ellos, se seleccionará la configuración de contenedor dev predefinida.
Editar el archivo devcontainer.json
You can add and edit the supported configuration keys in the devcontainer.json
file to specify aspects of the codespace's environment, like which VS Code extensions will be installed. For information about the settings and properties that you can set in a devcontainer.json
file, see "devcontainer.json reference" in the VS Code documentation.
El archivo de devcontainer.json
se escribe utilizando el formato JSONC. Esto te permite incluir comentarios dentro del archivo de configuración. For more information, see "Editing JSON with VS Code" in the VS Code documentation.
Note: If you use a linter to validate the devcontainer.json
file, make sure it is set to JSONC and not JSON or comments will be reported as errors.
Editor settings for VS Code
Cuando configuras los ajustes de editor para VS Code, hay tres alcances disponibles: Espacio de trabajo, [Codespaces] Remotos , y Usuario. Si una configuración se define en varios alcances, los ajustes de espacio de trabajo tomarán prioridad, luego los de [Codespaces] Remotos, y luego los de Usuario.
You can define default editor settings for VS Code in two places.
- Editor settings defined in the
.vscode/settings.json
file in your repository are applied as Workspace-scoped settings in the codespace. - Editor settings defined in the
settings
key in thedevcontainer.json
file are applied as Remote [Codespaces]-scoped settings in the codespace.
Applying configuration changes to a codespace
Después de que cambia la configuración de los Codespaces para un repositorio, puedes aplicar los cambios a un codespace existente si vuelves a compilar el contenedor para el codespace.
-
Accede a la Paleta de comandos de Visual Studio Code (
Shift + Command + P
/Ctrl + Shift + P
) y luego comienza a escribir "rebuild". Selecciona Codespaces: Reconstruir contenedor. -
Si los cambios a tu configuración de contenedor dev ocasionan un error del contenedor, tu codespace se ejecutará en modo de recuperación y verás un mensaje de error. Fix the errors in the configuration.
- Para diagnosticar el error revisando la bitácora de creación, haz clic en Ver bitácora de creación.
- Para arreglar los errores que se identificaron en las bitácoras, actualiza tu archivo
devcontainer.json
. - Para aplicar los cambios, vuelve a crear tu contenedor.