- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
有点远见,但是有人在 linux 容器(特别是 docker)中使用 bcrypt 时遇到任何问题并且知道自动解决方法吗?我和这两个有同样的问题:
Invalid ELF header with node bcrypt on AWSBox
bcrypt invalid elf header when running node app
我的 Dockerfile
# Pull base image
FROM node:0.12
# Expose port 8080
EXPOSE 8080
# Add current directory into path /data in image
ADD . /data
# Set working directory to /data
WORKDIR /data
# Install dependencies from package.json
RUN npm install --production
# Run index.js
CMD ["npm", "start"]
如果我已经在我的 node_modules 中安装了 bcrypt,我会收到前面提到的无效 ELF header 错误,但是如果我删除它(只是它本身或我的所有包),当我构建容器时由于某种原因它没有安装.我必须在构建后手动进入容器并将其安装在里面。
是否有自动解决方法?
或者,也许,只是,用 Node 堆栈来替代 bcrypt 的好方法是什么?
最佳答案
Liam 的评论是关于钱的,只是为 future 的互联网旅行者扩展它。
问题是您已将 node_modules 文件夹复制到容器中。这是一个问题的原因是 bcrypt 是一个本地模块。它不仅仅是 javascript,还有一堆在安装时编译的 C 代码。
从该编译中产生的二进制文件存储在 node_modules 文件夹中,并根据它们的构建位置进行定制。将他们从他们的 OSX 家移植到一个陌生的 Linux 领域会导致他们行为不端并提示 ELF header 和仙女脚。
解决方案是 echo node_modules >> .dockerignore
并运行 npm install
作为 Dockerfile 的一部分。这意味着 native 模块将在您的笔记本电脑上在容器内部而不是在容器外部编译。
有了这个,就不需要在启动 CMD 之前运行 npm install 了。只需将它放在 Dockerfile 的构建阶段就可以了。
protip:官方 Node 镜像默认设置 NODE_ENV=production,npm 与 --production 标志相同。大多数时候这是一件好事。当您的 Dockerfile 还包含一些依赖于开发依赖项(webpack 等)的构建步骤时,这不是一件好事。在这种情况下,您需要 NODE_ENV=null npm install
专业提示:您可以通过将 package.json 单独复制到代码的其余部分来更好地利用 Docker 的缓存。让你的 Dockerfile 看起来像这样:
# Pull base image
FROM node:0.12
# Expose port 8080
EXPOSE 8080
# Set working directory to /data
WORKDIR /data
# Set working directory to /data
COPY package.json /data
# Install dependencies from package.json
RUN npm install
# Add current directory into path /data in image
ADD . /data
# Run index.js
CMD npm start
这样,Docker 只会在您更改 package.json 时重新运行 npm install
,而不是每次更改一行代码时。
关于linux - Docker 容器中 bcrypt 的 ELF header 或安装问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31604334/
密码散列的理想 bcrypt 工作因素是什么。 如果我使用因子 10,则在我的笔记本电脑上对密码进行哈希处理大约需要 0.1 秒。如果我们最终得到一个非常繁忙的网站,那么仅仅检查人们的密码就会变成大量
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
好吧,经过大量研究,我决定使用 bcrypt(请随意评论)在我的 PhoneGap 应用程序中散列和存储密码。 几天前,我偶然发现了 Bcrypt.net,它对我来说似乎“足够好”(再次,请随意发表评
我是 Ruby on Rails 的初学者,正在尝试向 http://ruby.railstutorial.org/ 学习我正在创建 example_app,但卡在了第 6 章。 我的Ruby版本:r
我是 Ruby on Rails 的初学者,正在努力学习 http://ruby.railstutorial.org/我正在创建 sample_app,但卡在了第 6 章。 我的 Ruby 版本:ru
我正在 Spring Hibernate MVC 中从事 Web 应用程序项目。我在 Spring security 中使用 Bcrypt 算法将编码密码存储在数据库中。 现在我想要解码该编码密码以停
我正在使用 sails js 框架来开发 Web 应用程序,并且我尝试安装 bcrypt 节点模块来进行密码哈希处理。但它显示以下错误 除了安装 python 或 VS c++ redistribut
我收到错误 Cannot find module 'bcrypt' in nodejs application 我尝试使用 npm install bcrypt 安装它,但仍然遇到问题 npm i b
我有一个 python 脚本,它将用户数据导入到 mongodb 中,该 mongodb 使用 bcrypt 来哈希用户的密码。 来自 mongodb 的数据也将在 Node.js Web 应用程序中
我想使用 Go 创建一个用户身份验证系统,但我无法登录帐户。我使用 bcrypt 来散列密码,然后将其保存到数据库 (MySQL)。当我想将它与插入的密码进行比较时,就会出现问题。我有这个错误:has
我尝试创建Minecraft 插件(这是我的第一个),但无法修复此错误: 因此,该插件编译良好,但是当代码必须执行此代码时: BCrypt.checkpw(mdp, result.getString(
嗨,我最近在我的项目中使用了 bcrypt npm 包的 bcrypt.genSalt 。使用 bcrypt.genSalt 的基本思想是为需要加密的密码生成 Salt。使用 bcrypt.genSa
这听起来像是一个奇怪的问题,我实际上不得不问这个感觉有点奇怪,但是在花了几个小时查看 MSDN 文档以了解添加的 bcrypt 例程之后在 Vista 中,我几乎得出结论,没有实际的 bcrypt 支
我想在我的 grails 项目中使用 bcrypt 散列算法,而不是它的 defaultSHA-256 消息摘要算法。要启用 bcrypt,您只需使用 grails install-plugin sp
关于bcrypt npm package ,我看到推荐使用异步版本。但是,我想真正了解两个版本在性能方面的差异(即事件循环、阻塞 I/O 等) 版本 1:异步 const hash = await b
我有一个问题,我可以在 node-bcrypt 和passport.js 中创建散列密码,但无法使用散列密码。 我使用 nodejs、express、mongodb、mongoose、passport
我目前正在尝试在我的 Spring Security 中使用 LDAP 实现 BCrypt。我的问题是 LDAP 是否支持此功能,如果支持,我该如何实现?查看下图,我没有将 BCrypt 视为 LDA
我创建了一个新的 Lumen 5.4 项目并尝试播种一些数据。在播种机中,我使用 bcrypt 来散列密码。但是当我运行 php artisan db:seed 时,我得到了这个错误: Call to
当我将 has_secure_password 添加到模型(继承自 ActiveRecord::Base)时,出现错误,指出“bcrypt-ruby 不是 bundle 的一部分”。 这里的日志是:
请帮我弄清楚为什么我无法在运行 ubuntu 14.04 的系统中安装 bcrypt 错误: somehostname@somehost:~$ pip install bcyrpt Collectin
我是一名优秀的程序员,十分优秀!