加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

node.js – Bcrypt:与Docker和Sails.JS无效的ELF头

发布时间:2020-12-16 03:37:25 所属栏目:安全 来源:网络整理
导读:我的节点Dockfile: # Set the base image to ubuntuFROM ubuntu# Define working directoryADD . /srcWORKDIR /src# Install Node.js other dependenciesRUN apt-get update apt-get -y install curl apt-get -y install sudo curl -sL https://deb.n

我的节点Dockfile:

# Set the base image to ubuntu
FROM ubuntu

# Define working directory
ADD . /src
WORKDIR /src

# Install Node.js & other dependencies
RUN apt-get update && 
        apt-get -y install curl && 
        apt-get -y install sudo && 
        curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash - && 
        apt-get -y install python build-essential nodejs

RUN npm install -g node-gyp && 
        node-gyp clean && 
        npm cache clean

RUN node -v

# Install nodemon
RUN npm install -g nodemon


ADD package.json /src/package.json
RUN cd /src && npm install


# Expose port
EXPOSE  8080

# Run app using nodemon
CMD npm install; nodemon /src/app.js

这是我的docker-compose.yml:

nginx:
    build: ./nginx
    links:
        - node1:node1
        - node2:node2
        - node3:node3
    ports:
        - "80:80"
redis:
    image: redis
    ports:
        - "6379"
node1:
    build: ./node
    links:
        - redis
    ports:
        - "8080"
node2:
    build: ./node
    links:
        - redis
    ports:
        - "8080"
node3:
    build: ./node
    links:
        - redis
    ports:
        - "8080"

docker-compose build成功运行,Redis / Nginx在docker-compose上正确设置,但节点实例抛出此错误:

node2_1 | /src/node_modules/bcrypt/node_modules/bindings/bindings.js:83
node2_1 |         throw e
node2_1 |               ^
node2_1 | Error: /src/node_modules/bcrypt/build/Release/bcrypt_lib.node: invalid ELF header
node2_1 |     at Error (native)
node2_1 |     at Module.load (module.js:355:32)
node2_1 |     at Function.Module._load (module.js:310:12)
node2_1 |     at Module.require (module.js:365:17)
node2_1 |     at require (module.js:384:17)
node2_1 |     at bindings (/src/node_modules/bcrypt/node_modules/bindings/bindings.js:76:44)
node2_1 |     at Object.

我到处搜索,似乎无法找到有效的解决方案.我尝试使用常规安装URL:https://deb.nodesource.com/setup,专门安装python2.7,并使用ubuntu:15.04图像.

我已经读过,当人们在OS X(我的操作系统)上构建linux env后尝试使用bcrypt时会发生这种情况,但我认为这不会是问题因为我正在使用docker构建所有东西boot2docker.

最佳答案
确保您没有复制node_modules文件夹.使用官方nodejs“onbuild”图像时会出现此错误,该图像会复制所有内容…

现在我使用:

.dockerignore

node_modules

dockerfile

FROM node:6.4.0

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app

CMD [ "npm","start" ]

EXPOSE 6969

编辑:Github上的官方NodeJS Docker启动器映像项目接受了我的READ README请求,该请求指示显式忽略node_modules.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读