微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Dockerfile / npm:创build一个sudo用户来运行npm install

创build一个Dockerfile来安装我们创build的节点框架(按照我以前的post):

# 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预计不会以root身份运行 – 有没有办法链接一系列的sudo useradd命令来创build一个具有sudo权限的临时用户,然后我可以切换到USER来运行npm install ?

编辑:更新上面,现在得到这个问题后,成功地创build一个用户,并得到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>

docker:当连接到发布的端口时连接被拒绝

如何在Windows上使用Ubuntu作为基础映像的Docker应用程序?

Docker容器不能第二次启动(iptables)

Docker中的Docker无法挂载卷

启动adhoc docker实例:是否build议每个请求启动一个docker实例?

运行dockerized节点应用程序时出现“错误:产生mongoexport ENOENT”

从端口80到其他端口的Nginx代理

在Alpine Linux Docker上找不到安装的Go二进制文件

Nginx proxy_pass到一个链接的docker容器

bash脚本命令“陷阱”在docker容器中不起作用

解决您的“尝试解锁”问题,请先尝试清理npm缓存

npm cache clean

之后,运行

npm install

“尝试解锁”问题通常是由于没有正确设置环境变量HOME引起的。 npm需要将它设置为一个可以编辑的目录(它在那里建立和管理一个.npm目录)。

你可以在docker run -e "HOME=/home/docker"指定docker run调用中的环境变量。

我试图执行时遇到类似的npm安装错误是作为我的Dockerfile中的非root用户。 Svante对这个问题的解释是轰动的,npm在$ HOME目录下做了一些缓存。 这是一个简单的Dockerfile,可以与npm install配合使用:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐