我有一个Vue.js项目,我正在尝试使用node:latest
容器在Docker中构建它。这是我的Makefile
中安装项目所需包的相关行:
CWD = $(shell pwd)
UID = $(shell id -u)
GID = $(shell id -g)
# ...
sometarget:
docker run \
--rm \
-e HOME=/home/node \
-u ${UID}:${GID} \
-v ${CWD}:/usr/src/app \
-w /usr/src/ui \
node:latest \
npm install
注意:通过覆盖用户和组ID,我可以确保由
npm install
创建的文件具有正确的所有权,使得当前用户可以在之后运行make clean
。
npm install
调用尝试创建~/.npm
。然而,如果当前用户和组ID与容器中的node
用户不匹配,则会出现错误。npm ERR! path /home/node/.npm
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir
npm ERR! Error: EACCES: permission denied, mkdir '/home/node/.npm'
我希望如果可能的话,
npm
可以完全跳过创建/home/node/.npm
目录。是否有一个标志可以防止创建此目录?容器是短暂的,因此保留目录内容没有任何价值。
node
命令运行,则由该命令创建的文件将具有不同的用户/组 ID,主机用户将无法编写/删除它们。 - Nathan Osman