3
respostas

Mapear volume do host para pasta definida como workdir no Dockerfile

Fiz o pull da imagem douglasq/node , no entanto quando tento criar um container mapeando o volume para a pasta /var/www o container é criado mas não permanece em execução.

docker run -d -p 8080:3000 -v "/home/cristiano/Alura/Docker:/var/www" douglasq/node

Fiz um teste trocando /var/www para /var/teste e o volume foi mapeado e o container permaneceu em execução, por que não foi possível mapear a pasta /var/www?

3 respostas

Oi Cristiano, tudo bem? Testei aqui e entendi por que, quando o container sobe, ele tenta executar o npm install, mas não encontra o package.json no /var/www, isso gera um erro e o container é "morto".

Pra ver os logs do que aconteceu eu usei o docker container logsinformando o id do container.

Tudo bom Wanderson e você? Olhei o log do container e realmente ele teve problemas com o npm install, o engraçado é que a imagem foi construída durante a aula e seu Dockerfile contém a copia do package.json para a pasta /var/www. Fiz o mapeamento para pasta /var/teste e pude constatar que o package.json realmente está lá.

Imaginei que seria possível mapear a pasta /var/www onde está o código do projeto para que eu pudesse enxergar o codigo que está no container na minha máquina host e assim continuar o desenvolvimento, no entanto parece que uma vez que o código esteja encapsulado no container ele não pode mais ser reaproveitado para desenvolvimento, seria isso mesmo?

Isso mesmo Cristiano! Lembra que quando criamos a imagem, o Docker escreve a nossa aplicação em uma das camadas da imagem e logo, essa camada fica permissão de somente leitura. Então para um próximo build da nossa aplicação, precisamos gerar uma nova imagem para a respectiva versão.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software