
Já tem um tempo que vi umas pessoas utilizando o VSCode para desenvolvimento, junto com o Docker, e ví que editavam o código dentro do próprio container, e que não era preciso ter o Python ou o NodeJs (por exemplo) instalado na máquina onde desenvolviam, tudo era feito dentro do container, sendo que no máximo, a pasta onde ficam os códigos era compartilhada entre a maquina host e o container.
Como gosto muito de usar o Docker, justamente pelo fato não não precisar ter tudo instalado na máquina, basta ter uma imagem para gerar um container e fazer a utilização, resolvi aprofundar um pouco nessa empreitada e aprender um pouco mais sobre o assunto.
Tudo o que eu tenho visto sobre, tentei aplicar nesse repositório do Github que criei especificamente para isso https://github.com/kylefelipe/vscode_docker_development.
Para esse exemplo, eu criei um servidor simples, em NodeJS, cujo a única função dele é retornar um texto ‘Hello World!’ quando é feito uma requisição GET nele.
Para tentar emular um workflow de desenvolvimento mais próximo do real, criei alguns arquivos Docker para emular o deploy em produção, desenvolvimento e um arquivo docker-compose.yaml que foi o utilizado para gerar o container com o VSCode ligado nele.
Para trabalhar assim com o VSCode, é necessário instalar o plugin Remote Development, que irá adicionar outros plugins ao editor de texto e mais algumas funções, como um botão a mais na barra de status.
Utilizando o VSCode em conjunto com container Docker
Para utilizar esse repositório que usei de exemplo, basta cloná-lo ou fazer o download (o que for melhor), abrir ele no VSCode, logo em seguida vá na Paleta de Comandos do VSCode, ou clicar no botão que o plugin adicionou na barra de status (1) e escolher a opção Remote-Containers: Open folder in container
(2).

Em seguida abrirá uma tela para escolher em qual lugar encontra-se os arquivos Docker para a utilização, basta navegar até a pasta clicar em abrir.
O VSCode irá compilar uma imagem, iniciar um container de desenvolvimento ligar a janela atual ao container, tornando possível conseguir editar os arquivos lá dentro.

Pasta .devcontainer
É criada uma pasta .devcontainer
que contém um arquivo JSON devcontainer.json.
Nesse arquivo estão algumas das configurações que o plugin irá utilizar, e alguma configuração adicional que a pessoa que estiver desenvolvendo queira utilizar.
Eu coloquei nesse arquivo, as extensões que gostaria que fossem instaladas dentro do container que o VSCode irá utilizar, algumas features (como github-cli e o git).
Na propriedade "service"
eu coloquei o nome do serviço que tenho o desejo de trabalhar no exemplo, que seria o "app"
, esse nome tem de ser o mesmo utilizado no arquivo "docker-compose.yaml"
.
Já no "workspaceFolder"
eu coloquei o local que deverá ser utilizado como workspace dentro do container, todas as edições que ocorrerem nessa pasta, serão compartilhadas entre host
e container
.
Também coloquei um comando que é executado quando o container for criado, na propriedade "postCreateCommand"
.
Em "settings"
eu precisei de informar qual o shell o VSCode deve utilizar no terminal, pois a imagem que utilizei não tem o Fish Shell instalada (e eu nem queria instalar), e sempre que eu precisava de um terminal no VSCode eu tinha problemas, com essa configuração, dentro do container, o terminal a ser utilizado por padrão é o BASH.
Minhas Impressões
Gostei muito dessa opção, pois assim, podemos desenvolver, testar, aprender novas linguagens sem precisar instalar tudo direto na máquina e correr o risco de quebrar alguma biblioteca que o Sistema Operacional ou outro programa utilize (principalmente em ambiente Linux).
No ®Windows, é preciso usar o ®WSL, com uma boa procurada na internet é fácil encontrar como instalar, configurar e usar para desenvolvimento.
É necessário prestar atenção nos plugins que estão na máquina host
, pois nem todos vão funcionar quando o VSCode estiver rodando ligado a um container, vai ser necessário instalar os plugins dentro do container.
Coloquei no README do repositório algumas documentações que fui encontrando no decorrer dos estudos.
Apesar de ter usado um exemplo em JavaScript (NodeJs) é possível utilizar esse método também em outras linguagens, até mesmo C#. Há também uma opção de ligar o VSCode em um container que está rodando, para editar algum arquivo.
Quero utilizar mais o VSCode integrado com o Docker, para facilitar as coisas e ir aprofundando os conhecimentos de Docker também.
Espero que gostem!
Abraços.
One thought on “VSCode em container Docker”