我的NestJ应用程序在我的本地机器(windows)上运行得很好。现在,我想为我的应用程序创建一个坞容器。当我试图启动我的容器时,我对Argon2有一个问题。我在容器上安装了所有需要的氩。我的错误在哪里?
谢谢
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:
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"]码头工人-组成:
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:发布于 2020-03-03 17:03:45
为子孙后代而回答:
听起来您没有.dockerignore文件,所以当您从本地计算机( COPY . . )中取出node_modules文件夹并试图在Docker (阿尔卑斯Linux)中运行它时,当您在Docker上下文中正确运行npm install argon2时,当您从本地复制到Docker时会覆盖它。如果您创建了一个.dockerignore文件,那么向它添加/node_modules,这样就不会移动node_modules目录了。
发布于 2020-12-10 21:00:52
我也有这个问题,我做了上面的提示由Jay McDoniel。虽然对我来说,我还遇到了另一个问题,似乎也抛出了同样的错误。对我来说,问题是我不小心在我的项目中发现了一些东西,而在我应该让npm install编辑的一个纱线项目中,我给出了一个警告:
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.lock或package-lock.json)从您的项目中删除,并且始终只在yarn和npm之间使用一种类型的包管理器),这个问题才得到解决。
https://stackoverflow.com/questions/60511317
复制相似问题