Se você já tem o docker instalado na sua máquina, você não precisa instalar o node para rodar comandos simples como o ‘npm install’.
Basta executar o seguinte comando:
docker run -v C:\path\meu_projeto:/mnt/meu_projeto --name node12 -w /mnt/meu_projeto node:12 npm install
Segue uma pequena explicação de cada parte:
- docker run – Comando do docker para executar um container;
- -v C:\path\meu_projeto:/mnt/meu_projeto – Compartilha um local da sua máquina com o container. Você deve substituir o “C:\path\meu_projeto” pelo path completo do local onde está o ‘package.json” do seu projeto;
- –name node12 – é o nome do container. Você pode mudar se quiser.
- -w /mnt/meu_projeto – determina a pasta corrente (WORKDIR) do seu projeto. Apontamos para o /mnt/meu_projeto por ser o local onde queremos executar o ‘npm install’;
- node:12 – é o nome da imagem. Na primeira execução, o docker vai baixar essa imagem da internet. Nas outras ele já vai usar a imagem local.
- npm install – é o comando que será executado no container.
Se sua aplicação for Angular, você pode executar o ‘ng serve’ usando o mesmo princípio. Só que dessa vez o comando é um pouco maior, pois, além de compartilhar uma pasta local, você também deve compartilhar uma porta da rede:
docker run -p 4200:4200 -v C:\path\meu_projeto:/mnt/meu_projeto --name node12 -w /mnt/meu_projeto node:12 ./node_modules/@angular/cli/bin/ng serve --host 0.0.0.0 --disableHostCheck
Repare que além da opção “-p”, usei também o caminho completo do ‘ng’. Isso é necessário porque o @angular/cli não foi instalado globalmente dentro da imagem.
Também é necessário usar o parâmetro “–host 0.0.0.0” para que o ‘ng serve’ escute a porta 4200 a partir de todos os adaptadores de rede e não apenas do ‘localhost’ de dentro do container.
Se você puder, deixe um comentário para que eu saiba se essa dica foi útil para você e me incentivar a escrever mais sobre esse assunto.
Por hoje é só!
Outra dica valiosa! Não sabia que podia realizar um npm install diretamente com o comando run. Cada dia descubro uma coisa nova sobre esse docker.
Pois é! Eu comecei recentemente a explorar esse mundo do docker. O que eu for achando interessante, eu irei postar aqui. Obrigado pelo seu feedback mais uma vez Marcio!