Node.js docker教程(https://nodejs.org/en/docs/guides/nodejs-docker-webapp/)指定在启动docker之前应在主机上运行npm install以生成package-lock.json文件。
当npm / node在主机上不可用时,应如何生成此文件?
将新的依赖项添加到package.json时,package-lock.json应该如何更新?
npm指定应将package-lock.json文件签入源代码控制。当通过docker运行npm install时,它会在容器中生成package-lock.json文件 - 这不是从源代码管理中检出的位置。显而易见的解决方法是在文件更新时将文件从容器复制到主机,但似乎应该有一个更简单的解决方案。
我通常只是创建一个临时容器来运行npm而不必在主机上安装node和npm。像这样的东西:
docker run --rm -v "$(pwd)":/data -w /data -it node bash
然后在bash中我运行npm init
生成一个package.json和npm install
来生成package-lock.json。您可能希望使用-u "$UID"
使文件也由您的主机用户拥有,或者只是在之后使用它。
我做同样的事情来安装新的包,只是在临时容器上的bash内部的npm install package
。