我正在尝试通过docker工具箱为Windows主机上的devlopement环境创建一个docker dev工具容器,但是我在运行npm install命令时遇到了一些麻烦。 它在linux主机上工作正常,但在Windows主机上我遇到以下错误:
FROM node:latest
RUN apt-get update
RUN apt-get install vim -y
RUN useradd -ms /bin/bash node
RUN echo "fs.inotify.max_user_watches=100000" > /etc/sysctl.conf
ADD . /var/www/site
RUN chown -R node:node /var/www/site
RUN chown -R node:node /usr/local/lib/node_modules
RUN chown -R node:node /usr/local/bin
USER node
ENV HOME /var/www/site
WORKDIR /var/www/site
RUN npm install -g bower
RUN npm install --global gulp -y
EXPOSE 80 8080 35729
这是我的Dockerfile:
docker build -t dev_tools .
在Docker快速入门终端中,我使用以下命令:
构建图像(工作正常)
docker run --name=dev_tools_container -t --rm -v "//c/Users/Public/site:/var/www/site" --net=host dev_tools
构建容器(工作正常)
docker exec -it dev_tools_container npm install
尝试安装npm依赖项(发现错误):
{ error_message: 'You have exceeded your rate-limit for this API.',
results: [],
status: 'OVER_QUERY_LIMIT' }
感谢您的时间!
答案 0 :(得分:4)
而不是
RUN npm install --global gulp -y
使用
RUN sudo npm install --global gulp -y
您尝试从用户gulp
(非超级用户)安装node
作为全局包。
或在将用户切换到节点之前安装gulp
。
USER node
RUN npm install --global gulp -y
boot2docker 基于 VirtualBox 。出于安全原因,Virtualbox不允许在共享文件夹上使用符号链接。
启用符号链接您必须将 VBoxInternal2 / SharedFoldersEnableSymlinksCreate / SHARE_NAME 设置为 1 。 (以下是如何在Vargrant上进行描述的链接:Symbolic links and synced folders in Vagrant)
VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
替换VM_NAME和SHARE_NAME并重新启动VirtualBox。
另一种解决方案是将--no-bin-link
添加到npm
:
RUN npm install -g bower --no-bin-link
RUN npm install --global gulp -y --no-bin-link
默认情况下,Windows 7安全策略不允许创建符号链接,因为它是潜在的安全威胁。如果用户不在管理员组中,请运行 secpol.msc 并导航至本地政策 - 用户权限分配,并将您的用户添加到创建符号链接。
如果您的用户属于管理员组,请使用以管理员身份运行启动VirtualBox
。
答案 1 :(得分:2)
您可以将node_modules挂载为卷,因此它将是Docker容器中的Linux文件系统。将其添加到Dockerfile:
VOLUME /var/www/site/node_modules
您将在C:Users/Public/site/node_modules
看到该目录,因为它对于安装点是必要的,但除非您在容器内,否则您将看不到任何内容。