我已经尝试了 this post 中的所有解决方案和 this post
我没有找到解决方案来消除运行docker-compose up
时出现的以下错误:
module.js:598
return process.dlopen(module, path._makeLong(filename));
^
Error: /code/node_modules/bcrypt/lib/binding/bcrypt_lib.node: invalid ELF header
这是我最新的尝试 docker-compose.yml
version: "2"
services:
app:
build: ./client
ports:
- "3000:3000"
links:
- auth
volumes:
- ./client:/code
auth:
build: ./auth-service
ports:
- "3002:3002"
links:
- db
volumes:
- ./auth-service:/code
db:
...
还有我的身份验证服务 Dockerfile:
FROM node:7.7.1
EXPOSE 3002
WORKDIR /code
COPY package.json /code
RUN npm install
COPY . /code
CMD npm start
尝试了上述两个链接中的每个解决方案后,我重建了容器,但总是会导致相同的错误。
还值得注意的是,当我不使用 docker 时,该服务在本地运行良好。
如何让 docker 与 bcrypt 一起使用?
更新
我通过执行以下操作使其正常工作:
- 查找容器的ID:
docker ps
- 访问容器:
docker exec -t -i containerId/bin/bash
- 安装 bcrypt:
npm install bcrypt
这对于可移植性来说并不理想
最佳答案
我花了几个小时试图解决这个问题,最后我想出了以下解决方案。 我的撰写文件如下所示......
version: "3"
services:
server:
build:
context: ./server
volumes:
- ./server:/usr/src/app
- /usr/src/app/node_modules/
ports:
- 3050:3050
depends_on:
- db
command: ["nodemon", "./bin/www"]
第二个卷挂载非常重要,因为它解决了本地 node_module 问题。
仅供引用,我的 dockerfile 是这样的:
FROM node
RUN npm install -g nodemon
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
EXPOSE 3050
CMD ["nodemon", "./bin/www"]
关于node.js - Docker 与 Node bcrypt — 无效的 ELF header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42817446/