docker 容器中的 sqlite3 出现错误。执行格式错误

问题描述 投票:0回答:1

我正在开发一个小型爱好项目,其中我有一个使用 sqlite3 作为数据库的后端。然后我想对其进行 dockerize 并最终将其托管在某个地方。 我的问题如下所示,我已经在谷歌上搜索了该问题的解决方案。但没有效果。

我已经尝试过但不起作用的事情

  • 将node_modules添加到.dockerignore
  • 删除sqlite3,清理纱线缓存,重新安装sqlite3
  • 删除node_modules并运行yarn install
  • 我在某处读到,一些 npm 包的二进制文件可以捆绑到 Windows(我正在使用的)上,然后以某种方式在基于 Linux 的容器中使用。但由于yarn install是在dockerfile中运行的,我看不出这会是什么问题。

我的dockerfile:

# syntax=docker/dockerfile:1

FROM node:18-alpine
WORKDIR /app
COPY package.json ./
COPY yarn.lock ./
RUN yarn install
COPY . .
CMD ["yarn", "start"]
EXPOSE 3000

运行我的 docker 容器时,我会:

docker build -t my-app .

然后

docker run -dp 127.0.0.1:3000:3000 my-app

问题

但是在我的 docker 容器日志中我收到以下错误:

2024-06-10 20:43:52 yarn run v1.22.19
2024-06-10 20:43:52 $ nodemon app.ts
2024-06-10 20:43:52 [nodemon] 3.1.0
2024-06-10 20:43:52 [nodemon] to restart at any time, enter `rs`
2024-06-10 20:43:52 [nodemon] watching path(s): *.*
2024-06-10 20:43:52 [nodemon] watching extensions: ts,json
2024-06-10 20:43:52 [nodemon] starting `ts-node app.ts`
2024-06-10 20:43:53 [nodemon] app crashed - waiting for file changes before starting...
2024-06-10 20:43:53 Error: Error loading shared library /app/node_modules/sqlite3/build/Release/node_sqlite3.node: Exec format error
2024-06-10 20:43:53     at Object.Module._extensions..node (node:internal/modules/cjs/loader:1460:18)
2024-06-10 20:43:53     at Module.load (node:internal/modules/cjs/loader:1203:32)
2024-06-10 20:43:53     at Function.Module._load (node:internal/modules/cjs/loader:1019:12)
2024-06-10 20:43:53     at Module.require (node:internal/modules/cjs/loader:1231:19)
2024-06-10 20:43:53     at require (node:internal/modules/helpers:177:18)
2024-06-10 20:43:53     at bindings (/app/node_modules/bindings/bindings.js:112:48)
2024-06-10 20:43:53     at Object.<anonymous> (/app/node_modules/sqlite3/lib/sqlite3-binding.js:1:37)
2024-06-10 20:43:53     at Module._compile (node:internal/modules/cjs/loader:1364:14)
2024-06-10 20:43:53     at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
2024-06-10 20:43:53     at Object.require.extensions.<computed> [as .js] (/app/node_modules/ts-node/src/index.ts:1608:43) {
2024-06-10 20:43:53   code: 'ERR_DLOPEN_FAILED'
2024-06-10 20:43:53 }
docker sqlite
1个回答
0
投票

只需创建

.dockerignore

然后添加

.dockerignore
node_modules

然后重建docker

© www.soinside.com 2019 - 2024. All rights reserved.