Personalización de la configuración del editor y del proyecto

Completado

Ha configurado un contenedor de desarrollo para uno de los proyectos de su agencia. Ahora "solo funcionará" para cualquier persona que tenga Docker y la extensión Dev Containers. Seguirán teniendo que instalar dependencias. Es posible que también necesiten algunas extensiones de Visual Studio Code que no conozcan.

Afortunadamente, puede personalizar y automatizar completamente toda la configuración del proyecto mediante el archivo devcontainer.json.

Un vistazo más detallado a devcontainer.json

Echemos un vistazo a las opciones principales del .devcontainer/devcontainer.json archivo del proyecto Panel de productos. Es un poco largo examinarlo todo a la vez, así que echemos un vistazo a él en secciones.

Configuración de compilación

La image propiedad define cómo se creará el contenedor, en función de lo que se conoce como una imagen de contenedor.

"image": "mcr.microsoft.com/devcontainers/python:0-3.11"
},

Esta imagen se hospeda en el repositorio de devcontainers/images, donde puede consultarla más adelante. Las imágenes de este repositorio son todas las imágenes pregeneradas, que aceleran el flujo de trabajo y dan lugar a una configuración más .devcontainer/devcontainer.json sencilla.

También puede usar archivos conocidos como Dockerfile o un archivo de Docker Compose para configurar la configuración. Estos archivos pueden residir en la .devcontainer carpeta y le permiten configurar aún más determinados requisitos de configuración, como la instalación de software adicional. Puede obtener más información en nuestra documentación del contenedor de desarrollo.

Características

Las características del contenedor de desarrollo son unidades autocontenibles y compartidas de código de instalación y configuración de contenedor de desarrollo. El nombre procede de la idea de que hacer referencia a uno de ellos le permite agregar más herramientas, tiempo de ejecución o la biblioteca "Features" en el contenedor de desarrollo para que lo use usted o sus colaboradores.

Al usar el comando Dev Containers: Agregar archivos de configuración del contenedor de desarrollo en VS Code, se le presenta una lista de scripts para personalizar las configuraciones existentes del contenedor de desarrollo, como instalar Git o la CLI de Azure.

Configuración del proyecto

Una sección posterior del archivo trata directamente con la configuración del proyecto.

customizations establece propiedades específicas del producto para productos que admiten contenedores de desarrollo, como VS Code y GitHub Codespaces.

Por ejemplo, puede establecer vscode.settings para copiar la configuración específica de la máquina en el contenedor. Es posible que tenga esta configuración en su propia configuración de Visual Studio Code. Al agregarlos a settings, asegúrese de que cualquier persona que abra este proyecto obtenga esta configuración específica de VS Code.

En este contenedor de Python, puede ver estas configuraciones en su imagen base mcr.microsoft.com/devcontainers/python:0-3.11. Proporcionan al usuario una experiencia de edición mejorada de Python.

  • Puede usar la extensions matriz dentro de la customizations.vscode propiedad para especificar qué extensiones de Visual Studio Code se deben instalar en Visual Studio Code cuando se conecta al contenedor. La configuración normal de Visual Studio Code y todas las extensiones que ya tiene no estarán presentes cuando use contenedores de desarrollo. Las extensiones se especifican aquí con sus identificadores.

postCreateCommand

La postCreateCommand propiedad le permite ejecutar los comandos que desee después de crear el contenedor. Si recuerda el primer ejercicio, tuvo que ejecutar el comando pip3 para instalar las dependencias. ¿Pero cómo sabrías hacerlo? Es posible que no lo hagas. Puede configurarlo aquí para que se produzca automáticamente y otros no tendrán que preocuparse por ello.

En el ejercicio siguiente, modificará el archivo devcontainer.json para automatizar varios aspectos del proyecto que facilitarán el éxito inmediato de otros desarrolladores.