linux进不了容器配置目录,linux – 在Docker容器中使用bcrypt的ELF头文件或安装问题...

利亚姆的评论是关于钱,只是为互联网上的未来旅行者扩展它.

问题是您已将node_modules文件夹复制到容器中.这是一个问题的原因是bcrypt是一个本机模块.它不仅仅是javascript,还包括一堆在安装时编译的C代码.

来自该编译的二进制文件存储在node_modules文件夹中,并且它们被自定义到它们构建的位置.将它们从OSX家中移植到一个奇怪的Linux领域会导致它们行为不端并抱怨ELF标题和仙女脚.

解决方案是回显node_modules>> .dockerignore并运行npm install作为Dockerfile的一部分.这意味着本机模块将在容器内编译,而不是在笔记本电脑外部编译.

有了这个,就不需要在启动CMD之前运行npm install.只是在Dockerfile的构建阶段就可以了.

protip:官方节点映像设置NODE_ENV =默认生产,其中npm与–production标志相同.大多数时候这是一件好事.当您的Dockerfile还包含一些依赖于dev依赖项(webpack等)的构建步骤时,这不是一件好事.在这种情况下,您需要NODE_ENV = null npm install

pro protip:你可以通过将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,而不是每次更改一行代码时.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值