[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Gley Riviery
Criador Gley Riviery 15/09/2022

 Olá Carlos!

Eu construí meu próprio Dockerfile e docker-composer segundo seu curso de docker, adicionando alguma extensões PHP e uns apps externos ao Laravel que uso em minhas aplicações, mas não consigo de jeito nenhum configurar para funcionarem os pacotes NPM, sempre recebo aviso de que não foi possível encontrar o Node ou o script NPM. Já tentei colocar no meu docker-compose a imagem oficial do Node de diversas formas, e ela sempre instala OK e executa os comandos usando o <docker-compose run -rm "comando"> via terminal, mas não consegue executar dentro da aplicação em si. Usei os seguintes parâmetros no docker-compose.yml:

npm:

  image: node

  working_dir: /var/www/meu_app

  entrypoint: ["npm"]

  volumes:

    - ./:/var/www/meu_app

  networks:

    - minha_rede

E daí rodei um 
<docker-compose run --rm npm install>. O comando resultou OK mas o Laravel continua sem conseguir encontrar o npm.

Alguma pista de onde estou errando? Não queria ter de instalar o NPM dentro da minha imagem Laravel para não pesar mais (pois já uso muitos apps e extensões php), além do que imagino que tenha formas mais elegantesde resolver isso usando as próprias imagens oficiais no docker.

Manager Carlos Ferreira 15/09/2022

Olá, Gley!
Tudo bem?

Uma alternativa seria justamente essa, incluir o NPM no seu Dockerfile, assim já teria tudo na mesma imagem, mas é justamente o que você disse, vai ficar mais pesada a imagem;

Se quiser ter o NPM na mesma imagem (igual ao Laravel Sail), basta incluir:
RUN apt-get install -y npm install -g npm

---

No seu docker-compose.yml você pode usar um Dockerfile especifico só com o Node e já com o NPM.

Aqui um exemplo, basta criar um service no arquivo docker-compose.yml e usar um Dockerfile personalizado, com Node e NPM: https://www.cloudbees.com/blog/using-docker-compose-for-nodejs-development

Se não conseguir progredir, me retorna que te dou uma força;

Carlos Ferreira
Criador Gley Riviery 15/09/2022

Mesmo para rodar nativamente na imagem não estava funcionando só com o apt-get install npm (parece que a versão no repositório padrão é bem antiga), mas aproveitando sua deixa sobre o Sail, resolvi fuçar no Dockerfile deles e encontrei todo o script de instalação do npm apropriadamente, e daí pelo menos dentro da imagem está instalando OK. Inclusive, não sabia que no Sail vinha o NPM instalado. A documentação do Laravel fala que o Sail faz uma integração muito eficiente com o Docker, tem algum motivo para você preferir usar seu próprio Dockerfile ao invés daqueles oferecidos como padrão no Laravel 9?

Gley Riviery
Manager Carlos Ferreira 15/09/2022

Uso meu próprio setup Docker mesmo para mostrar mais sobre fundamentos e etc;

Também gosto muito do Laravel Sail, por ser uma ferramenta do Laravel é sempre foda, de alto nível.

Inclusive vai sair curso completão de Laravel Sail aqui na plataforma;

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!