创建一个Dockerfile
来安装我们创建的节点框架(根据我之前的文章here):
# Install dependencies and nodejs
RUN apt-get update
RUN apt-get install -y python-software-properties python g++ make
RUN add-apt-repository ppa:chris-lea/node.js
RUN apt-get update
RUN apt-get install -y nodejs
# Install git
RUN apt-get install -y git
# Bundle app source
ADD . /src
# Create a nonroot user, and switch to it
RUN /usr/sbin/useradd --create-home --home-dir /usr/local/nonroot --shell /bin/bash nonroot
RUN /usr/sbin/adduser nonroot sudo
RUN chown -R nonroot /usr/local/
RUN chown -R nonroot /usr/lib/
RUN chown -R nonroot /usr/bin/
RUN chown -R nonroot /src
USER nonroot
# Install app source
RUN cd /src; npm install
问题在于,npm预期不会以根用户的身份运行--是否有方法链接一系列sudo useradd
命令来创建具有sudo权限的临时用户,然后切换到USER
运行npm install
?
编辑:更新了上面的内容,在成功创建用户并进入npm install
行并阻塞之后,得到了这个问题:
Error: Attempt to unlock javascript-brunch@1.7.1, which hasn't been locked
at unlock (/usr/lib/node_modules/npm/lib/cache.js:1304:11)
at cb (/usr/lib/node_modules/npm/lib/cache.js:646:5)
at /usr/lib/node_modules/npm/lib/cache.js:655:20
at /usr/lib/node_modules/npm/lib/cache.js:1282:20
at afterMkdir (/usr/lib/node_modules/npm/lib/cache.js:1013:14)
at /usr/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53
at Object.oncomplete (fs.js:107:15)
If you need help, you may report this *entire* log,
including the npm and node versions, at:
<http://github.com/npm/npm/issues>
发布于 2014-02-26 11:46:48
要解决您的“尝试解锁”问题,请首先尝试清除npm缓存,方法是
npm cache clean
在那之后,跑
npm install
发布于 2014-08-09 15:22:18
“试图解锁”问题通常是由于没有正确设置环境变量HOME
造成的。npm
需要将其设置为可以编辑的目录(在那里设置和管理.npm
目录)。
您可以在docker run
调用中使用例如docker run -e "HOME=/home/docker"
指定环境变量。
发布于 2014-12-28 18:33:33
当我试图在我的Dockerfile中以非根用户的身份执行is时,我遇到了一个类似的npm安装错误。Svante对这个问题的解释是,npm在$HOME dir下做了一些缓存。下面是一个使用npm安装的简单Dockerfile:
FROM dockerfile/nodejs
# Assumes you have a package.json in the current dir
ADD . /src
# Create a nonroot user, and switch to it
RUN /usr/sbin/useradd --create-home --home-dir /usr/local/nonroot --shell /bin/bash nonroot
RUN chown -R nonroot /src
# Switch to our nonroot user
USER nonroot
# Set the HOME var, npm install gets angry if it can't write to the HOME dir,
# which will be /root at this point
ENV HOME /usr/local/nonroot
# Install app source
WORKDIR /src
RUN npm install
https://stackoverflow.com/questions/21906419
复制相似问题