首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有节点码头容器的Argon2

带有节点码头容器的Argon2
EN

Stack Overflow用户
提问于 2020-03-03 16:09:17
回答 2查看 2.7K关注 0票数 4

我的NestJ应用程序在我的本地机器(windows)上运行得很好。现在,我想为我的应用程序创建一个坞容器。当我试图启动我的容器时,我对Argon2有一个问题。我在容器上安装了所有需要的氩。我的错误在哪里?

谢谢

代码语言:javascript
复制
internal/modules/cjs/loader.js:1025
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: Error loading shared library /usr/src/app/node_modules/argon2/build/Release/argon2.node: Exec format error
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:1025:18)
    at Module.load (internal/modules/cjs/loader.js:815:32)
    at Function.Module._load (internal/modules/cjs/loader.js:727:14)
    at Module.require (internal/modules/cjs/loader.js:852:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at load (/usr/src/app/node_modules/node-gyp-build/index.js:20:10)
    at Object.<anonymous> (/usr/src/app/node_modules/argon2/argon2.js:5:81)
    at Module._compile (internal/modules/cjs/loader.js:959:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
    at Module.load (internal/modules/cjs/loader.js:815:32)

Dockerfile:

代码语言:javascript
复制
FROM node:12.13-alpine As development

WORKDIR /usr/src/app

COPY package*.json ./

# --no-cache: download package index on-the-fly, no need to cleanup afterwards
# --virtual: bundle packages, remove whole bundle at once, when done
RUN apk --no-cache --virtual build-dependencies add \
    python \
    make \
    g++ \
    && npm install \
    && apk del build-dependencies
RUN npm install -g node-gyp
RUN npm install argon2
RUN npm install --only=development

COPY . .

RUN npm run build

FROM node:12.13-alpine as production

ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}

WORKDIR /usr/src/app

COPY package*.json ./

# --no-cache: download package index on-the-fly, no need to cleanup afterwards
# --virtual: bundle packages, remove whole bundle at once, when done
RUN apk --no-cache --virtual build-dependencies add \
    python \
    make \
    g++ \
    && npm install \
    && apk del build-dependencies
RUN npm install -g node-gyp
RUN npm install argon2
RUN npm install --only=production

COPY . .

COPY --from=development /usr/src/app/dist ./dist

CMD ["node", "dist/main"]

码头工人-组成:

代码语言:javascript
复制
version: "3.7"

services:
  main:
    container_name: NestApp
    build:
      context: .
      target: development
    volumes:
      - .:/usr/src/app
      #- /usr/src/app/node_modules
    ports:
      - 3001:3001
    command: npm run start:dev
    networks:
      - webnet
    depends_on:
      - mysql
  mysql:
    image: mysql:5
    restart: always
    networks:
      - webnet
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: bdd
    ports:
      - "3306:3306"
    volumes:
      - my-db:/var/lib/mysql
  adminer:
    image: adminer
    restart: always
    ports:
      - 8085:8080
    networks:
      - webnet
networks:
  webnet:
    driver: bridge
# Names our volume
volumes:
  my-db:
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-03 17:03:45

为子孙后代而回答:

听起来您没有.dockerignore文件,所以当您从本地计算机( COPY . . )中取出node_modules文件夹并试图在Docker (阿尔卑斯Linux)中运行它时,当您在Docker上下文中正确运行npm install argon2时,当您从本地复制到Docker时会覆盖它。如果您创建了一个.dockerignore文件,那么向它添加/node_modules,这样就不会移动node_modules目录了。

票数 6
EN

Stack Overflow用户

发布于 2020-12-10 21:00:52

我也有这个问题,我做了上面的提示由Jay McDoniel。虽然对我来说,我还遇到了另一个问题,似乎也抛出了同样的错误。对我来说,问题是我不小心在我的项目中发现了一些东西,而在我应该让npm install编辑的一个纱线项目中,我给出了一个警告:

代码语言:javascript
复制
warning package-lock.json found. Your project contains lock files generated by    
tools other than Yarn. It is advised not to mix package managers in order to avoid 
resolution inconsistencies caused by unsynchronized lock files. To clear this. 
warning, remove package-lock.json.

直到我删除了package-lock.json (经验教训:选择您最不喜欢的两个锁文件(yarn.lockpackage-lock.json)从您的项目中删除,并且始终只在yarnnpm之间使用一种类型的包管理器),这个问题才得到解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60511317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档