我尝试在Docker镜像中运行Meteor服务器应用程序。运行主文件以启动服务器会导致错误,请参阅以下详细信息:
Could not locate the bindings file.
(我的系统:Macbook Pro,OSX 10.11.4)
有人知道如何解决这个错误吗?
npm rebuild
npm install --unsafe-perm node-gyp
和npm install --unsafe-perm libxmljs
无效。两者都在/home/build/bundle/programs/server
的docker容器中执行。 (由于docker image中的root权限,--unsafe-perm
标志为needed)Dockerfile
(灵感来自meteorhacks/meteord)FROM debian:wheezy
ENV sourcedir /home/source
ENV builddir /home/build
RUN mkdir ${sourcedir} && mkdir ${builddir}
RUN apt-get update -y
RUN apt-get install -y curl bzip2 build-essential python git
RUN \
NODE_VERSION=4.4.7 \
&& NODE_ARCH=x64 \
&& NODE_DIST=node-v${NODE_VERSION}-linux-${NODE_ARCH} \
&& cd /tmp \
&& curl -O -L http://nodejs.org/dist/v${NODE_VERSION}/${NODE_DIST}.tar.gz \
&& tar xvzf ${NODE_DIST}.tar.gz \
&& rm -rf /opt/nodejs \
&& mv ${NODE_DIST} /opt/nodejs \
&& ln -sf /opt/nodejs/bin/node /usr/bin/node \
&& ln -sf /opt/nodejs/bin/npm /usr/bin/npm
RUN curl -sL https://install.meteor.com | sed s/--progress-bar/-sL/g | /bin/sh
ADD . ${sourcedir}
RUN cd ${sourcedir} \
&& meteor build --directory ${builddir} --server=http://localhost:3000
RUN cd ${builddir}/bundle/programs/server/ && npm install
node main.js
文件夹中运行bundle
时出现错误消息:/home/build/bundle/programs/server/node_modules/fibers/future.js:280
throw(ex);
^
Error: Could not locate the bindings file. Tried:
→ /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/build/bcrypt_lib.node
→ /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/build/Debug/bcrypt_lib.node
→ /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/build/Release/bcrypt_lib.node
→ /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/out/Debug/bcrypt_lib.node
→ /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/Debug/bcrypt_lib.node
→ /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/out/Release/bcrypt_lib.node
→ /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/Release/bcrypt_lib.node
→ /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/build/default/bcrypt_lib.node
→ /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/compiled/4.4.7/linux/x64/bcrypt_lib.node
at bindings (/home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bindings/bindings.js:88:9)
at Object.<anonymous> (/home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/bcrypt.js:3:35)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Module.Mp.load (/home/build/bundle/programs/server/npm/node_modules/meteor/babel-compiler/node_modules/reify/node/runtime.js:16:23)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.Npm.require (/home/build/bundle/programs/server/boot.js:190:18)
答案 0 :(得分:0)
答案 1 :(得分:0)
好的,我发现了这个错误:
问题是buildir
中envrionment varibale Dockerfile
的定义:
ENV builddir /home/build
bcrypt
的构建过程似乎使用相同的变量,并在该目录中构建文件bcrypt_lib.node
和obj.target
。所以他们在正确的地方失踪了。
答案 2 :(得分:0)
如果您在哈萨克斯坦这样的受审查国家/地区,则第一次通过vpn运行流星会有所帮助,因为它无法下载gyp插件。下载失败的地方应该有一行,而不是专门运行流星启动时。