bcrypt在Windows主机上的linux容器的docker中不起作用

时间:2018-09-13 05:29:15

标签: node.js docker docker-compose bcrypt

我正在为后端服务器创建一个docker,但是在创建卷之前一切都很好,所以我配置了.yml docker-compose.yml

version: "3.7"

services:
  my-api: 
    container_name: backend
    build: ./
    command: npm start
    working_dir: /usr/src/my-api
    ports:
      - "3000:3000"
    volumes:
      - ./:/usr/src/my-api

这是我的 Dockerfile

FROM node:10

WORKDIR /usr/src/my-api

COPY ./ ./

RUN npm install

CMD ["/bin/bash"]

考虑到我创建了我的 .dockerignore

node_modules

根据我的分析,问题是在创建时,直接复制了模块,这导致了如下所示的问题。

Successfully built e1dfb81dd4c4
Successfully tagged facial-api_smart-brain-api:latest
Creating backend ... done
Attaching to backend
backend            |
backend            | > facial-api@1.0.0 start /usr/src/Facial-api
backend            | > nodemon server.js
backend            |
backend            | [nodemon] 1.18.4
backend            | [nodemon] to restart at any time, enter `rs`
backend            | [nodemon] watching: *.*
backend            | [nodemon] starting `node server.js`
backend            | internal/modules/cjs/loader.js:718
backend            |   return process.dlopen(module, path.toNamespacedPath(filename));
backend            |                  ^
backend            |
backend            | Error: /usr/src/Facial-api/node_modules/bcrypt/lib/binding/bcrypt_lib.node: invalid ELF header
backend            |     at Object.Module._extensions..node (internal/modules/cjs/loader.js:718:18)
backend            |     at Module.load (internal/modules/cjs/loader.js:599:32)
backend            |     at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
backend            |     at Function.Module._load (internal/modules/cjs/loader.js:530:3)
backend            |     at Module.require (internal/modules/cjs/loader.js:637:17)
backend            |     at require (internal/modules/cjs/helpers.js:20:18)
backend            |     at Object.<anonymous> (/usr/src/Facial-api/node_modules/bcrypt/bcrypt.js:6:16)
backend            |     at Module._compile (internal/modules/cjs/loader.js:689:30)
backend            |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
backend            |     at Module.load (internal/modules/cjs/loader.js:599:32)
backend            | [nodemon] app crashed - waiting for file changes before starting...

有什么想法,建议解决吗?

1 个答案:

答案 0 :(得分:0)

有两种可能的情况,

  1. 如果您使用一个平台来安装诸如(Windows / MacOSX)之类的节点模块,并尝试与相同的节点模块一起运行而不将其重新安装于诸如Linux之类的其他平台中。如果遇到这种情况,请尝试在现有平台中删除节点模块,然后同样地进行“ rpm安装”。
  2. 如果您在一个平台上安装的节点版本与其他平台不同,请Check this以获得更多详细信息。