fox*_*fox 8 ubuntu node.js npm docker coreos
因此,根据这篇文章,我还有另一个关于在CoreOS上安装基于node.js的框架的后续问题.
所以,因为npm从package.jsonvia 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
Run Code Online (Sandbox Code Playgroud)
我知道这是一种不太优雅的做事方式,但我不知道如何在这里完成一个npm安装.当我尝试上述操作时,我尝试安装时会在所有软件包上出现错误:
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>
...
Run Code Online (Sandbox Code Playgroud)
有关如何修改我的Dockerfile的任何想法?我只能假设这是一个许可问题,与我在nonroot上面配置用户的方式有关,这可能是Docker框架特有的; 我只是在一个vanilla ubuntu安装上做这种事情没问题,尽管不是来自脚本.
在尝试创建任何自耕农项目时,我遇到了类似的错误,最终找到了解决办法:)
我收到了这个错误,因为我的主目录中的.npm文件夹的所有者是"root"用户所以我使用了
sudo chown [username] .npm
Run Code Online (Sandbox Code Playgroud)
现在我可以毫无错误地使用Yeoman和npm :)
希望能帮助到你!
我有一些修改/建议的建议:
Dockerfile使用类似这样的东西在之前缓存你的节点模块(把它放在apt-get:
ADD package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /src && cp -a /tmp/node_modules /src
Run Code Online (Sandbox Code Playgroud)
这样,如果您的应用程序代码发生更改,则每次都不会重建所有节点模块.把它放在你面前ADD . /src.我的博客文章中提供了更多详细信息/示例.
您不应该担心在您的Dockerfile...中以root用户身份运行- 这是默认设置.也许您的问题与root无关,而与主机目录中的内容无关.你可能需要从代码的目录中清除一个锁文件吗?
| 归档时间: |
|
| 查看次数: |
22773 次 |
| 最近记录: |