Ambiente dev com Windows/WSL - FullCycle

2022-10-28
Voltar

Para instalação desse sistema temos como guia o repositório no GitHub indicado:
https://github.com/codeedu/wsl2-docker-quickstart

Para habilitar o WSL no Windows devemos seguir os seguinte passos:
Primeiramente no PowerShell como administrador habilitar o VM do Windows:

$ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Em seguida podemos instalar o pacote WSL2 baixado diretamente da Microsoft no link WSL2.

Com isso devemos habilitar o WSL2 no Windows:

$ wsl --set-default-version 2
Caso já haja alguma distribuição instalada na versão 1 podemos alterá-la com o comando:

$ wsl --set-version <distribution name> 2
Para verificar as distribuições instaladas e a versão do WSL utilizamos o comando:

$ wsl -l -v
Podemos verificar as distribuições disponíveis para instalação em linha de comando com o comando:

$wsl -l -o
As versões disponíveis para instalação no momento são:
NAME                        FRIENDLY NAME
A melhor versão para ser instalada é a "Ubuntu" sem número de versão pois é a mais integrada com o Windows. Ela pode ser instalada pela linha de comando ou através da MSStore.
Outro aplicativo a ser instalado pela MSStore é o Windows Terminal que permite a execução de diversos tipos de terminal.
Os parâmetros de sistema do WSL podem ser definidos em um arquivo que deve ser criado no diretório C:\Users\<nome_do_usuario>\ com o nome .wslconfig .
Esse arquivo pode definir valores específicos para memória, processador e swap. Um exemplo de configuração para esse arquivo é:

[wsl2]
memory=8GB
processors=4
swap=2GB
Mais informações sobre as configurações do WSL ver o site Configurações Avançadas no WSL

Para a instalação do Docker podemos verificar a documentação no site Docker Docs. Importante: caso o Docker Desktop esteja instalado na máquina é necessário parar o serviço antes da instalação.

O passo-a-passo para a instalação é o seguinte:

$ sudo apt-get update
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
$ sudo service docker start
$ sudo docker run hello-world
Após isso executar a seção Linux Post-Install substituindo o $USER pelo nome de usuário local.

$ sudo groupadd docker
$ sudo usermod -aG docker $USER
Tive alguns problemas para executar o Docker.
Procurei uma solução e o que funcionou nesse caso foi o seguinte:

Para verificar o log do Docker devemos verificar o arquivo em /var/log/docker.log

Identificado o erro, verifiquei que era na inicialização das placas de rede.

A solução encontrada nesse repositório do GitHub.
Criamos duas instruções no iptables:
$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
$ sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
Com isso foi possível iniciar o serviço do Docker.

Devemos também instalar o docker-compose. Para isso utilizamos:
$ sudo apt-get install docker-compose
Para o terminal, instalar o oh-my-zsh. Esse shell tem vários plugin que permitem uma maior produtividade.
Alguns desses plugins são fast-sintax-highlighting, zsh-autosuggestions e zsh-completions.

Para instalação do oh-my-zsh primeiro devemos instalar o zsh:
$ sudo apt-get install zsh

Em seguida utilizamos os comandos do site do framework Oh My Zsh
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Um bom tutorial de instalação pode ser encontrado em Medium

Para os complementos sugeridos temos os seguintes links:

https://github.com/zdharma/fast-syntax-highlighting

$ git clone https://github.com/z-shell/F-Sy-H.git \
  ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/F-Sy-H
https://github.com/zsh-users/zsh-autosuggestions

$ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
https://github.com/zsh-users/zsh-completions

$ git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions
Com esses tres complementos instalados devemos incluir as seguintes linhas no arquivo .zshrc (verificar a documentação dos plugins em caso de dúvidas).

pugins=(... F-Sy-H zsh-autosuggestions)
fpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src
Por fim uma lista de extensões sugeridas para o VSCode:
Essa lista pode ser obtida em https://github.com/argentinaluiz/my-vscode-settings/tree/main/vscode-settings