jib*_*lex 9 node.js npm docker boot2docker
我正在尝试通过docker工具箱为windows主机上的devlopement环境创建一个docker dev工具容器,但是我在运行npm install命令时遇到了一些麻烦.它在Linux主机上工作正常,但在Windows主机上我收到以下错误:
npm ERR! Linux 4.1.13-boot2docker
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v5.5.0
npm ERR! npm v3.3.12
npm ERR! path /var/www/site/.npm/gulp/3.9.0/package.tgz.e87c24357cd6065ee71ce44c6f23673b
npm ERR! code ETXTBSY
npm ERR! errno -26
npm ERR! syscall rename
npm ERR! ETXTBSY: text file is busy, rename '/var/www/site/.npm/gulp/3.9.0/package.tgz.e87c24357cd6065ee71ce44c6f23673b' -> '/var/www/site/.npm/gulp/3.9.0/package.tgz'
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <https://github.com/npm/npm/issues>
npm ERR! Linux 4.1.13-boot2docker
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v5.5.0
npm ERR! npm v3.3.12
npm ERR! path npm-debug.log.39d944b679d410e5293d6721cbc8287a
npm ERR! code ETXTBSY
npm ERR! errno -26
npm ERR! syscall rename
npm ERR! ETXTBSY: text file is busy, rename 'npm-debug.log.39d944b679d410e5293d6721cbc8287a' -> 'npm-debug.log'
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <https://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! /var/www/site/npm-debug.log
Run Code Online (Sandbox Code Playgroud)
这是我的Dockerfile:
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
Run Code Online (Sandbox Code Playgroud)
在Docker快速入门终端中,我使用以下命令:
构建图像(工作正常)
docker build -t dev_tools .
Run Code Online (Sandbox Code Playgroud)
建造容器(工作正常)
docker run --name=dev_tools_container -t --rm -v "//c/Users/Public/site:/var/www/site" --net=host dev_tools
Run Code Online (Sandbox Code Playgroud)
尝试安装npm依赖项(发现错误):
docker exec -it dev_tools_container npm install
Run Code Online (Sandbox Code Playgroud)
感谢您的时间 !
代替
RUN npm install --global gulp -y
Run Code Online (Sandbox Code Playgroud)
使用
RUN sudo npm install --global gulp -y
Run Code Online (Sandbox Code Playgroud)
您尝试从用户(而不是超级用户)安装gulp为全局包node。
gulp或者在将用户切换到节点之前安装。
USER node
RUN npm install --global gulp -y
Run Code Online (Sandbox Code Playgroud)
boot2docker基于VirtualBox。出于安全原因,Virtualbox 不允许在共享文件夹上使用符号链接。
要启用符号链接,您必须将VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME设置为1。(这里是描述如何在 Vargrant 上执行此操作的链接:Vagrant 中的符号链接和同步文件夹)
VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
Run Code Online (Sandbox Code Playgroud)
替换 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
Run Code Online (Sandbox Code Playgroud)
默认情况下,Windows 7 安全策略不允许创建符号链接,因为它是潜在的安全威胁。如果用户不在管理员组中,请运行secpol.msc并导航到“本地策略”-“用户权限分配”,并将您的用户添加到“创建符号链接”。
如果您的用户属于管理员组,则从以管理员身份运行VirtualBox开始。
| 归档时间: |
|
| 查看次数: |
5077 次 |
| 最近记录: |