Docker: executando ‘npm install’ via container

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ó!

Este post foi útil para você?

2 comentários

    1. 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!

Deixe um comentário

O seu endereço de e-mail não será publicado.