gbl*_*ock 9 bcrypt node.js docker sails.js
我的节点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
Run Code Online (Sandbox Code Playgroud)
这是我的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"
Run Code Online (Sandbox Code Playgroud)
docker-compose build运行成功,Redis/Nginx设置正确,docker-compose up但节点实例抛出此错误:
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.<anonymous> (/src/node_modules/bcrypt/bcrypt.js:3:35)
node2_1 | at Module._compile (module.js:460:26)
node2_1 | at Object.Module._extensions..js (module.js:478:10)
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 Object.<anonymous> (/src/api/models/User.js:10:14)
node2_1 | at Module._compile (module.js:460:26)
node2_1 | at Object.Module._extensions..js (module.js:478:10)
node2_1 | 19 Aug 20:21:11 - [nodemon] app crashed - waiting for file changes before starting...
Run Code Online (Sandbox Code Playgroud)
我到处搜索,似乎无法找到有效的解决方案.我尝试使用常规安装URL:,https://deb.nodesource.com/setup专门安装python2.7,并使用ubuntu:15.04图像.
我已经读过,当人们在OS X(我的操作系统)上构建linux env后尝试使用bcrypt时会发生这种情况,但我不认为这是问题,因为我正在使用docker构建所有内容boot2docker.
Joa*_*uez 22
确保您没有复制该node_modules文件夹.使用官方nodejs"onbuild"图像时会出现此错误,该图像会复制所有内容...
现在我使用:
.dockerignore
node_modules
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
编辑:Github上的官方NodeJS Docker启动器映像项目已接受我的READ READ请求,该请求指示显式忽略node_modules.
即使使用Express而不是Sails,我也遇到了同样的事情.我在这里尝试了所有的建议都没有成功.诀窍是通过bcrypt-nodejs更改npm模块bcrypt:
npm uninstal bcrypt
npm install bcryptjs --save
Run Code Online (Sandbox Code Playgroud)
然后将您的需求更改为类似的内容
var bcrypt = require('bcryptjs');
Run Code Online (Sandbox Code Playgroud)
它现在正在完美运作.
在我的包配置中,"bcrypt":"^0.8.0"当我取出并将^其更改为时,"bcrypt":"0.8.0"我能够让一切运行起来。
问题是它试图运行 bcrypt 0.8.5,并且由于某种原因导致了问题。
| 归档时间: |
|
| 查看次数: |
10728 次 |
| 最近记录: |