在docker上运行meteor的错误

我刚刚在Docker上开始了一个meteor项目。 当meteor npm install后它运行meteor ,会出现这个错误

 [[[[[ /var/app ]]]]] => Started proxy. /root/.meteor/packages/meteor-tool/.1.4.1_1.139xb76++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/isopackets/ddp/npm/node_modules/meteor/promise/node_modules/meteor-promise/promise_server.js:165 throw error; ^ Error: EPROTO: protocol error, symlink '/root/.meteor/packages/meteor-tool/.1.4.1_1.139xb76++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/server-lib/node_modules' -> '/var/app/.meteor/local/.build677392.build/programs/.build850480.server/node_modules' at Error (native) 

为了logging,我在Win 10上通过virtualbox运行docker。似乎问题是关于创build符号链接失败,但是我已经安装了相同的virtualbox扩展包版本,并且已经在我的virtualbox上启用了共享文件夹的符号。 还有什么其他可能性导致这个问

UPDATE

正如在这个build议把--no-bin-linksmeteor npm install没有任何作用。

我有一个从这个答案启发的解决scheme。 基本上不是搞清楚如何修复符号链接,而是将meteor本地文件“移动”到自己的卷中。 这可以通过docker-compose创build一个卷来完成。 设置将是

 version: '2' services: webpack: build: context: . dockerfile: Dockerfile volumes: - .:/var/app - node_modules:/var/app/node_modules - meteor_local:/var/app/.meteor/local ports: - 3000:3000 links: - db environment: - LANG=en_US.UTF-8 - LC_ALL=en_US.UTF-8 db: image: mongo volumes: node_modules: driver: local meteor_local: driver: local 

正如你可以通过将.meteor/local装载到meteor_local所看到的那样,它允许任何需要创build符号链接的进程来在与共享文件夹分离的容器空间内运行,从而导致进程失败。 采用这种方法意味着在npm install后不需要添加--no-bin-links