4
respostas

DOCKER BUILD: npm notice created a lockfile as package-lock.json

Quando rodo o docker build recebo a mensagem acima e o retorno de tela abaixo, removendo os containers intermediarios. O que pode estar acontecendo? Já li instruções no stackoverflow mas me pareceu mais uma volta ao mundo resolver um problema que deve ser comum aos iniciantes em docker. A imagem é construiída mas sem os containers intermediários a partir do NPM INSTALL.

MacBook-Pro-de-PAULO:volume-exemplo PPERES$ docker build .
Sending build context to Docker daemon  10.24kB
Step 1/7 : FROM node:latest
 ---> aa3e171e4e95
Step 2/7 : MAINTAINER Paulo Peres
 ---> Using cache
 ---> 29a99935bcdc
Step 3/7 : COPY . /var/www
 ---> f6d6743d62b8
Step 4/7 : WORKDIR /var/www
Removing intermediate container ac5096feb899
 ---> ffa6a51de9ec
Step 5/7 : RUN npm install
 ---> Running in d1cb8b72a7d4
npm notice created a lockfile as package-lock.json. You should commit this file.
up to date in 0.135s
Removing intermediate container d1cb8b72a7d4
 ---> 0f049bc0f13e
Step 6/7 : ENTRYPOINT npm start
 ---> Running in ce620f10a399
Removing intermediate container ce620f10a399
 ---> 7bdafb9094c4
Step 7/7 : EXPOSE 3000
 ---> Running in 6ca2b1c00beb
Removing intermediate container 6ca2b1c00beb
 ---> afceb92cfe99
Successfully built afceb92cfe99
MacBook-Pro-de-PAULO:volume-exemplo PPERES$
4 respostas

Não consegui entender sua dúvida Paulo. Poderia ser mais claro.

Se for só relacionado a mensagem acima, ela só aparece pq o seu package.json ou o node-modules mudou, e o node gera esse arquivo. Mas não é algo pra se preocupar.

Obrigado Luan. O problema é que a partir do container ac5096feb899 - WORKDIR em diante é removido da IMAGEM. Isso vai afetar as images pois o NPM INSTALL (que está sendo removido também) é necessário no pacote. Não sei o motivo pelo qual existe uma remoção interferindo na integridade da IMAGEM gerada. Algumas informações úteis:

1 - Estou rodando do terminal do MAC (MacOs High Sierra 10.13.3) mas acho que isso não afetaria.

2 - As informações que li nos demais FORUMS são muuuiito ruins, longas, confusas e não atacam o problema diretamente mas, estão dizendo que a partir da versão do NODE JS 5.0 (ou superior) solicita a criação do arquivo package-lock.json em COMMIT (???).

3 - Usei um recurso (-g grunt-cli) - RUN npm install -g grunt-cli - que deu um bypass na mensagem relativa ao package-lock.json (que parece não ser o causador do removing) mas o REMOVING dos CONTAINERES ainda acontece.

Por que os containeres intermediários sao REMOVIDOS?

Enfim, se alguém puder dar uma dica, fico devendo uma.

Forte abraço a todos!

Vamos lá, vou tentar ajudar.

Pelo que entendi o erro não parece ser muito complexo. Acho que você está executando o 'docker build' numa pasta onde não tem um projeto node...

O que esse erro significa é que o seu package.json não está sendo encontrado. Isso quer dizer que a linha que diz:

COPY . /var/www

Não está conseguindo copiar sua aplicação node pra dentro da imagem. Este comando copia tudo que está no diretório . (o diretório atual) para a pasta /var/www/ dentro da imagem.

Tente executar o comando docker build no diretório raiz da sua aplicação node e acredito que vai funcionar perfeitamente.

Ah, não se preocupe com essa coisa de commit de código, quando vc copiar a aplicação corretamente para a imagem não vai mais aparecer.

Luan, boa noite! Primeiro quero te agradecer a gentileza e as dicas. Tenho certeza que é algo simples que estou esquecendo ou passando por alto mas, conto contigo. Abaixo estao os comandos que rodei: 1 - Primeiro listo o diretorio volume-exemplo para verificar se estou no mesmo diretorio do node.dockerfile e do package.json 2 - Em seguida confiro que não há imagem existente com o mesmo nome 3 - Então rodo o build dentro do volume-exemplo, onde estão os arquivos do projeto JS que irei fazer o push. 4 - Poderá verificar que, dei uma melhorada no comando build: docker build - f node.dockerfile -t pauloperes/paepe . O problema entretanto persiste.

MacBook-Pro-de-PAULO:volume-exemplo PPERES$ ls
index.html    index.js    main.css    node.dockerfile    package.json
MacBook-Pro-de-PAULO:volume-exemplo PPERES$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
ubuntu                      latest              c9d990395902        7 days ago          113MB
hello-world                 latest              e38bc07ac18e        8 days ago          1.85kB
node                        latest              aa3e171e4e95        13 days ago         673MB
r-base                      latest              f7c545621aa1        4 weeks ago         670MB
dockersamples/static-site   latest              f589ccde7957        2 years ago         191MB
MacBook-Pro-de-PAULO:volume-exemplo PPERES$ docker build -f node.dockerfile -t pauloperes/paepe .
Sending build context to Docker daemon  13.31kB
Step 1/7 : FROM node:latest
 ---> aa3e171e4e95
Step 2/7 : MAINTAINER name Paulo Peres
 ---> Running in 6c708e8c613a
Removing intermediate container 6c708e8c613a
 ---> d19067131c3a
Step 3/7 : COPY . /var/www
 ---> 805b6289711e
Step 4/7 : WORKDIR /var/www
Removing intermediate container 6b235bca2bfe
 ---> f20277788f6f
Step 5/7 : RUN npm install
 ---> Running in 8aa2ca3397a3
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN volume-exemplo@1.0.0 No description
npm WARN volume-exemplo@1.0.0 No repository field.

added 50 packages in 3.394s
Removing intermediate container 8aa2ca3397a3
 ---> c8e59a12bd23
Step 6/7 : ENTRYPOINT npm start
 ---> Running in 825565e97129
Removing intermediate container 825565e97129
 ---> a15628557642
Step 7/7 : EXPOSE 3000
 ---> Running in 5181d0b22cb4
Removing intermediate container 5181d0b22cb4
 ---> 4e558f79354c
Successfully built 4e558f79354c
Successfully tagged pauloperes/paepe:latest