gpt4 book ai didi

node.js - bcrypt 无法在带有 Windows 主机的 Linux 容器的 docker 中工作

转载 作者:太空宇宙 更新时间:2023-11-04 01:43:12 25 4
gpt4 key购买 nike

我正在为后端服务器创建一个 docker,但在创建卷之前一切都很好,所以我配置了 .ymldocker-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. 如果您使用一个平台安装 Node 模块(例如(Windows/MacOSX)),并尝试使用相同的 Node 模块运行,而无需在其他平台(例如(Linux))中重新安装。如果在这种情况下,请尝试删除现有平台中的 Node 模块并“rpm install”相同。
  2. 如果您在一个平台上安装的 Node 版本与其他平台不同,Check this了解更多详情。

关于node.js - bcrypt 无法在带有 Windows 主机的 Linux 容器的 docker 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52307190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com