Configurando o ambiente Node.Js + Docker usando WSL2 com OhMyZsh

Caio Tracera
mobicareofficial
Published in
6 min readDec 2, 2020

A guerra na escolha pelo melhor sistema operacional ganhou um capítulo importante com o lançamento do WSL em 2016, e ficou mais interessante com o lançamento posterior da segunda versão do WSL, ainda mais potente.

Nesse artigo, você vai aprender como configurar um ambiente Node.js usando WSL na sua segunda versão com OhMyZsh, tudo pelo windows!

Pré-requisito

  1. Windows 10 na versão 1903 ou superior.

Ativando o WSL

Caso você atenda ao pré-requisito, o primeiro passo é habilitar o WSL na sua máquina. Para isso, execute o PowerShell com privilégios de administrador e execute o seguinte comando:

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

Em seguida, habilite o recurso de Máquina Virtual na sua máquina, com o comando:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Baixe o pacote de atualização do kernel do Linux aqui.

Depois que a atualização finalizar, precisamos definir a segunda versão do WSL como a padrão do sistema. Para isso, rode o seguinte comando:

wsl — set-default-version 2

Instalando e Configurando o Linux

Antes de configurarmos o Linux, é necessário baixar qualquer uma das opções disponíveis na Windows Store:

Após baixar, execute o aplicativo do Linux que aparecerá no menu iniciar. Aguarde que a instalação se inicie e escolha um nome de usuário e senha para autenticação quando necessário.

Após o término da instalação, feche o aplicativo.

Configurando o terminal

Quando a instalação do linux terminar, conforme foi feito no passo anterior, você pode escolher entre continuar usando o próprio aplicativo do Linux para navegar pelo WSL ou configurar um terminal separado. Nesse tutorial, iremos utilizar a nova versão do terminal do Windows, mas você pode utilizar qualquer outro de sua preferência.

Após baixar e instalar o terminal do Windows, execute-o e verifique se o WSL já aparece como uma das opções de terminal, conforme na imagem. Caso apareça, selecione-o através do menu flutuante ou através das teclas de atalhos que podem variar de acordo com as suas configurações.

Ao abrir o terminal do Linux, rode o comando sudo apt update; sudo apt upgrade para instalar as atualizações pendentes.

Instalando o Zsh + OhMyZSH

Quando todas as atualizações estiverem feitas, rode o comando apt install zsh para instalar o ZSH. Após finalizar a instalação, rode o comando chsh -s $(which zsh) para garantir que o ZSH será o seu novo shell padrão e, em seguida, feche o terminal e abra-o novamente.

Caso apareça uma mensagem de configuração, selecione a opção “Populate your ~/.zshrc with the configuration recommended by the system administrator and exit (you will need to edit the file by hand, if so desired).” que, no nosso caso, é a opção 2.

Em seguida, para instalar o OhMyZSH, rode o comando sh -c “$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" diretamente do seu terminal. Ao término da instalação, seu terminal já estará de cara nova.

Nesse ponto, o OhMyZSH já está instalado e funcionando. Agora basta seguir com as configurações personalizadas e plugins da sua preferência.

Configurando o Docker

O Docker é parte fundamental do dia-a-dia do desenvolvedor. Dessa forma, é extremamente importante ter acesso ao Docker diretamente do ambiente Linux. Para isso, após a instalação e configuração do WSL feita nos passos anteriores, instale o Docker no seu Windows normalmente.

Em seguida, abra o painel de configurações do Docker. No menu “General”, ative a opção “Use WSL 2 based engine”.

Em seguida, no item “WSL Integration”, no menu “Resources”, ative a integração com a distribuição Linux que você configurou anteriormente.

Depois de feita as configurações, reinicie o seu terminal Linux e você deverá ter acesso aos comandos do Docker.

Instalando o Node.js

Como o WSL nos dá acesso apenas ao bash do Linux, utilizaremos o NVM para controlar qual versão do Node desejamos instalar e utilizar. Para isso, rode o seguinte script para instalar o NVM:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash

E, no final do arquivo ~/.zshrc, adicione o seguinte código para iniciar o NVM:

export NVM_DIR=”$([ -z “${XDG_CONFIG_HOME-}” ] && printf %s “${HOME}/.nvm” || printf %s “${XDG_CONFIG_HOME}/nvm”)”

[ -s “$NVM_DIR/nvm.sh” ] && \. “$NVM_DIR/nvm.sh” # This loads nvm

Em seguida, reinicie o terminal e execute o comando nvm — help para ter acesso a todos os comandos e instalar a versão desejada do node.

Após a instalação, você terá acesso completo ao node.

Atenção

Note que o recomendado ao trabalhar com o WSL é deixar os arquivos dentro da própria máquina virtual. Para isso, basta acessar o endereço \\wsl$ através do Windows Explorer, selecionar a pasta da sua distribuição, e salvar os seus arquivos dentro da home do usuário que você criou durante a instalação.

Bônus 1: Utilizando as credenciais da AWS no WSL

Se você utiliza a AWS, provavelmente vai encontrar algum problema com as credenciais no WSL, já que elas ficam salvas, por padrão, no Windows. Para resolver esse problema é simples: basta navegar até o arquivo ~/.zshrc e adicionar a seguinte linha no final do arquivo:

export AWS_SHARED_CREDENTIALS_FILE=”/mnt/c/Users/<User>/.aws/credentials”

Lembre-se de substituir a variável <User> pelo seu usuário do Windows. Dessa forma, as credenciais salvas no Windows também serão utilizadas no WSL.

Olá, eu sou o Caio Tracera, Desenvolvedor Backend na Akross e apaixonado pelo mundo da tecnologia e do desenvolvimento web. Comecei a desenvolver aos 12, divido meu tempo entre criar coisas e pegar a estrada.

A Mobicare e a Akross combinam os Melhores Talentos, Tecnologias de Ponta, Práticas Agile e DevOps com Capacidades Operacionais avançadas para ajudar Operadoras Telecom e grandes empresas a gerarem novas receitas e a melhorarem a experiência dos seus próprios clientes.

Se você gosta de inovar, trabalhar com tecnologia de ponta e está sempre buscando conhecimento, somos um match perfeito!

Faça parte do nosso time. 😉

--

--