docker:创建新用户后运行 npm install 时遇到问题

2023-12-24

所以我还有另一个关于在 CoreOS 上的 Docker 下安装基于 node.js 的框架的后续问题,per这个帖子 https://stackoverflow.com/questions/21873789/docker-installing-a-node-js-application-has-issues-since-docker-runs-as-root.

所以,因为npm对安装很挑剔package.json通过 root,我必须创建一个非 root sudo 用户才能安装该软件包。这就是我的Dockerfile目前看起来就像我们的存储库内部,基于 ubuntu 映像构建:

# 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 安装。当我尝试上述操作时,所有软件包在尝试安装时都会出现错误:

 Error: Attempt to unlock [email protected] /cdn-cgi/l/email-protection, 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>

 ...

关于如何修改我的 Dockerfile 有什么想法吗?我只能假设这是一些与我配置的方式有关的许可问题nonroot上面的用户可能是 Docker 框架特有的;我在普通的 ubuntu 安装上做这种事情没有问题,尽管不是通过脚本。


所以事实证明这可能是码头工人的问题 https://github.com/dotcloud/docker/issues/4614.

能够通过切换来解决这个问题USER nonroot to RUN /bin/su nonroot相反,之后一切正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker:创建新用户后运行 npm install 时遇到问题 的相关文章

随机推荐