A extensão Dev Containers do Visual Studio Code permite o uso de um contêiner Docker como um ambiente de desenvolvimento completo. Ela oferece a possibilidade de abrir qualquer pasta ou repositório dentro de um contêiner, aproveitando todas as funcionalidades do Visual Studio Code. Um arquivo chamado devcontainer.json no seu projeto instrui o VS Code sobre como acessar (ou criar) um contêiner de desenvolvimento com um conjunto definido de ferramentas e uma pilha de runtime. Esse contêiner pode ser usado para executar uma aplicação ou para fornecer ferramentas, bibliotecas ou runtimes separados necessários para trabalhar com um código-fonte.

Caminho para Criar um Dev Container

Neste documento, percorreremos os passos para criar um contêiner de desenvolvimento (dev) no VS Code:

  1. Crie um arquivo devcontainer.json, que descreve como o VS Code deve iniciar o contêiner e o que fazer após se conectar a ele.
  2. Faça e persista mudanças no dev container, como a instalação de novos softwares, usando um Dockerfile.
  3. Configure múltiplos contêineres através do Docker Compose.
  4. À medida que faz alterações, construa seu dev container para garantir que as mudanças sejam aplicadas.
  5. Após qualquer um dos passos acima, você terá um dev container totalmente funcional. Você pode continuar para o próximo passo deste tutorial para adicionar mais recursos ou parar e começar a trabalhar no ambiente de desenvolvimento atual.

Criando um arquivo devcontainer.json

A configuração do contêiner no VS Code é armazenada em um arquivo devcontainer.json. Este arquivo é semelhante ao arquivo launch.json para configurações de depuração, mas é usado para iniciar (ou anexar a) seu contêiner de desenvolvimento. A configuração do dev container está localizada em .devcontainer/devcontainer.json ou armazenada como um arquivo .devcontainer.json na raiz do seu projeto.

Você pode usar uma imagem como ponto de partida para seu devcontainer.json. Uma imagem é como um mini-drive com várias ferramentas e um sistema operacional pré-instalados. Você pode obter imagens de um registro de contêineres, que é uma coleção de repositórios que armazenam imagens. Aqui está um exemplo simples de devcontainer.json que usa uma imagem pré-construída do Contêiner de Desenvolvimento VS Code com TypeScript e Node.js:

json
{
"image": "mcr.microsoft.com/devcontainers/typescript-node:0-18"
}

Você pode alterar sua configuração para fazer coisas como:

  • Instalar ferramentas adicionais, como o Git, no contêiner.
  • Instalar automaticamente extensões.
  • Encaminhar ou publicar portas adicionais.
  • Definir argumentos de runtime.
  • Reutilizar ou estender sua configuração existente do Docker Compose.
  • Adicionar mais configurações avançadas do contêiner.

Por exemplo, se você quiser instalar a extensão Code Spell Checker no seu contêiner e encaminhar automaticamente a porta 3000, seu devcontainer.json ficaria assim:

{
"image": "mcr.microsoft.com/devcontainers/typescript-node",
"customizations":
{
"vscode": {
"extensions": ["streetsidesoftware.code-spell-checker"]
}
},
"forwardPorts": [3000]
}

Instalando Software Adicional

Você pode querer instalar softwares adicionais no seu dev container. Uma vez conectado ao contêiner pelo VS Code, você pode abrir um terminal do VS Code e executar qualquer comando contra o sistema operacional dentro do contêiner. Isso permite instalar novas utilidades de linha de comando e iniciar bancos de dados ou serviços de aplicativos dentro do contêiner Linux.

A maioria das imagens de contêineres é baseada em Debian ou Ubuntu, onde o comando apt ou apt-get é usado para instalar novos pacotes. Você pode aprender mais sobre o comando na documentação do Ubuntu. Imagens Alpine incluem um comando apk similar, enquanto imagens CentOS/RHEL/Oracle SE/Fedora usam yum ou, mais recentemente, dnf.

Por exemplo, para instalar o Git, você poderia executar os seguintes comandos no terminal integrado do VS Code:

# Se o sudo estiver instalado e configurado
sudo apt-get update
# Instalar Git
sudo apt-get install git

Dockerfile e Docker Compose

Além de usar o devcontainer.json, você pode utilizar um Dockerfile para customizar ainda mais seu dev container. O Dockerfile também fica na pasta .devcontainer. Você pode substituir a propriedade da imagem no devcontainer.json por dockerfile:

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

"customizations": {
"vscode": {
"extensions": ["dbaeumer.vscode-eslint"]
}
},

"forwardPorts": [3000]
}

Em casos onde um único ambiente de contêiner não é suficiente, você pode usar o Docker Compose para configurar configurações multi-contêiner.

Compartilhando Configurações do Contêiner

Você pode compartilhar facilmente uma configuração personalizada de Dev Container para seu projeto adicionando arquivos devcontainer.json ao controle de versão. Incluindo esses arquivos em seu repositório, qualquer pessoa que abrir uma cópia local do seu repositório no VS Code será automaticamente solicitada a reabrir a pasta em um contêiner, desde que tenha a extensão Dev Containers instalada.

Conclusão

Parabéns! Você configurou um contêiner de desenvolvimento no Visual Studio Code. Continue lendo para aprender como compartilhar configurações de contêineres entre colegas de equipe e vários projetos.

Visits: 135