Seu ambiente de desenvolvimento WSL2
Tags: wsl2, vscode, windowsterminal, docker
Published: 2020-05-21 20:17:37

Nesse artigo vou descrever como configurar seu ambiente de desenvolvimento Ubuntu dentro do Windows, possibilitando vantagens para o desenvolvedor como:

* acesso ao Bash nativo do Linux 
* uso do Docker com mais agilidade
* Rodar containers no Docker do Ubuntu e visualizar no navegador Edge/Chrome do Windows

 

### O que é WSL?

WSL significa **Windows Subsystem for Linux**, o que inicialmente seria uma camada de compatibilidade para executar binários feitos pra Linux no Windows nativamente, porém a nova versão WSL 2 coloca um kernel Linux lado-a-lado do kernel Windows.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/erssr2kcgbvyv8niqmdi.png)

### Instalação WSL

Abra o Powershell e digite o seguinte comando:

```PowerShell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```

```PowerShell
wsl --set-default-version 2
```

Agora vá até a Windows Store e busque pela sua distribuição Linux favorita:

![Alt Distribuições Linux Disponíveis](https://dev-to-uploads.s3.amazonaws.com/i/4xphqix370kvxvbwo0dp.png)

No meu caso optei pelo Ubuntu, na versão 20.4:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ywrk5p39zpadhlr2c4wg.png)

Logo que terminar a instalação, você vai receber uma tela de terminal para configurar o nome do usuário e senha. Feito isso já tem um Ubuntu pronto para o uso, mas vamos melhorar um pouco a experiência, instalando o Windows Terminal.

### Windows Terminal

Windows terminal é uma excelente ferramenta de desenvolvimento. Com ele você acaba tendo uma experiência muito mais rica nos consoles que você já utilizava no Windows, tais como CMD, Powershell e Git Bash.

#### Instalação

O Windows Terminal está disponível para download na Windows Store:

![Alt Windows Terminal](https://dev-to-uploads.s3.amazonaws.com/i/s9qaxtvvvtc2jtnh4h6s.png)

Assim que instalar você verá que ele já lista todos os terminais disponíveis, incluindo o o Bash do Ubuntu que acabamos de instalar.

![Alt Lista de Terminais disponíveis](https://dev-to-uploads.s3.amazonaws.com/i/vcnbdxv3mixnenq00vee.png)


#### Configuração

Terminando de instalar, visite a configuração.
Ainda não há interface gráfica para isso, mas é possível fazer através de arquivo de configuração.

![Alt Configuração Windows Terminal](https://dev-to-uploads.s3.amazonaws.com/i/u31k1kj5t545raobtz0x.png)

Exemplos de configurações possíveis:
* Temas e Fontes
* Inclusão ou Exclusão de Terminais disponíveis
* Diretório padrão
* Atalhados de teclado

### VScode

Ao abrir o VSCode após a instalação do WSL 2, ele vai sugerir que você instale a extensão *Remote - WSL*. Fazendo isso você vai possibilitar a seguinte arquitetura no VSCode:

![Alt VSCode no WSL](https://code.visualstudio.com/assets/docs/remote/wsl/architecture-wsl.png)

Dessa forma você vai ter uma experiência exatamente igual a que teria no Linux, inclusive acesso ao Bash, aos diretórios do Ubuntu e aos do windows através de /mnt/c, por exemplo.

#### Extensões

Quando você acessa o menu de extensões, logo repara que tem algumas coisas diferentes:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/eaan961ubdjspcr4xyl4.png)

Agora as extensões são separadas em local e WSL - Ubuntu, pois fazem sentido de acordo com o ambiente de execução.

Repare também que no canto inferior esquerdo, está indicado que você está usando o WSL Ubuntu, mas poderia estar usando outro ambiente.

### Docker

Terminada a configuração do VSCode, vamos para a cereja do bolo do WSL2: O Docker. Provavelmente todo mundo que já tentou usar o Docker for Windows teve uma experiência menos satisfatória que no Linux ou Mac, mas isso acabou.

Em conjunto com a Microsoft, o time do Docker fez uma arquitetura focada nas integrações com o WSL 2:

![Alt VSCode no WSL](https://i0.wp.com/www.docker.com/blog/wp-content/uploads/engineering/2019/06/wsl2_1.png?resize=1110%2C622&ssl=1)

Dessa forma temos a sensação de estarmos mesmo utilizando o Docker no Linux, dado a agilidade nas respostas dos comandos.

#### Configuração

Logo no começo da instalação o Docker for Windows questiona se quer configurar o Docker para uso do WSL (infelizmente não capturei essa tela).

Terminada a instalação acessar as configurações do Docker (no ícone próximo ao relógio) com o botão direito e acesse a opção *Settings*.

Vá até *Resources* e depois *WSL Integration* e marque o Ubuntu-20.4:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/jkidou3gr6qumnisu5dz.png)

### Conclusão

Com essas ferramentas configuradas o desenvolvedor tem o melhor dos mundos à sua disposição, pois tem acesso ao ferramental do Linux (que geralmente é a plataforma que roda as aplicações desenvolvidas), porém tem toda a facilidade do uso do Windows 10.

O próximo passo agora é instalar os pacotes das suas linguagens e ferramentas favoritas, utilizando o terminal Bash do Ubuntu (no Windows Terminal).

### Referências:
* [Novidades no WSL 2](https://docs.microsoft.com/pt-br/windows/wsl/wsl2-index)
* [Guia de instalação do Subsistema Windows para Linux para Windows 10](https://docs.microsoft.com/pt-br/windows/wsl/install-win10)
* [Developing in WSL](https://code.visualstudio.com/docs/remote/wsl)
(https://docs.microsoft.com/pt-br/windows/wsl/install-win10)
* [Docker ❤️ WSL 2 – The Future of Docker Desktop for Windows](https://www.docker.com/blog/docker-hearts-wsl-2/)
* Entendendo WSL 2 | E uma curta história sobre Windows NT{% youtube 28jHuWBi72w%}