Node.js docker教程(https://nodejs.org/en/docs/guides/nodejs-docker-webapp/)指定在启动docker生成package-lock.json文件之前,应先在主机上运行npm安装。
当主机上没有npm / node时应如何生成此文件?
当新的依赖项添加到package.json时,应该如何更新package-lock.json?
npm指定应将package-lock.json文件签入源代码管理。通过docker运行npm install时,它将在容器中生成package-lock.json文件-不在源控制中检出该文件的位置。显而易见的解决方法是,每当文件更新时将文件从容器复制到主机,但这似乎应该有一个更简单的解决方案。
答案 0 :(得分:2)
我通常只创建一个临时容器在内部运行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"
来使文件也由您的主机用户拥有,或者只是在之后对其进行了冠冕。
我做同样的事情来安装新软件包,只是将npm install package
安装在临时容器中bash内。