【问题标题】:error running meteor on docker在 docker 上运行流星时出错
【发布时间】:2017-01-25 11:27:33
【问题描述】:

我刚刚在 Docker 上开始了一个使用流星的项目。当它在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)

作为记录,我在我的 Win 10 上通过 virtualbox 运行 docker。似乎问题在于未能创建符号链接,但我已经安装了相同的 virtualbox 扩展包版本和符号用于我的 virtualbox 上已启用的共享文件夹。还有哪些可能导致该问题的原因?

更新

如在this suggestion 中将--no-bin-links 放到meteor npm install 没有任何效果。

【问题讨论】:

    标签: node.js meteor docker virtualbox


    【解决方案1】:

    我有一个受this answer 启发的解决方案。基本上,我们不是弄清楚如何修复符号链接,而是将流星本地文件“移动”到它自己的卷中。这可以通过 docker-compose 创建一个卷来完成。设置将是

    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 中,它允许任何需要创建符号链接的进程在与导致进程失败的共享文件夹分离的容器空间内运行。采用这种方法意味着无需在npm install 之后添加--no-bin-links

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-19
      • 2016-09-22
      • 2017-05-05
      • 2016-01-10
      • 2021-12-16
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多