Docker 构建问题“错误:找不到模块”

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

我在 Nuxt 前端 docker 容器中执行

docker build
命令时遇到问题。这是我的
Dockerfile
:

FROM node:lts-alpine as base

RUN npm install -g pnpm

WORKDIR /usr/src/app

COPY package.json pnpm-lock.yaml ./

RUN pnpm install

COPY . .

RUN pnpm run build
EXPOSE 3000

FROM node:lts-alpine as final
WORKDIR /app
COPY --from=base /usr/src/app/.output .

EXPOSE 3000
CMD ["node", "server/index.mjs"]

使用此

docker build
运行
Dockerfile
时,出现以下错误:

 => [base 4/7] COPY package.json pnpm-lock.yaml ./                                                                 0.1s
 => [base 5/7] RUN pnpm install                                                                                   13.0s
 => [base 6/7] COPY . .                                                                                            2.7s
 => ERROR [base 7/7] RUN pnpm run build                                                                            0.7s
------
 > [base 7/7] RUN pnpm run build:
0.581
0.581 > @ build /usr/src/app
0.581 > nuxi build
0.581
0.602 node:internal/modules/cjs/loader:1147
0.602   throw err;
0.602   ^
0.602
0.602 Error: Cannot find module '/usr/src/app/node_modules/nuxt/bin/nuxt.mjs'
0.602     at Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)
0.602     at Module._load (node:internal/modules/cjs/loader:985:27)
0.602     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
0.602     at node:internal/main/run_main_module:28:49 {
0.602   code: 'MODULE_NOT_FOUND',
0.602   requireStack: []
0.602 }
0.602
0.602 Node.js v20.11.1
0.605  ELIFECYCLE  Command failed with exit code 1.
------
Dockerfile:24
--------------------
  22 |     COPY . .
  23 |
  24 | >>> RUN pnpm run build
  25 |     EXPOSE 3000
  26 |
--------------------
ERROR: failed to solve: process "/bin/sh -c pnpm run build" did not complete successfully: exit code: 1
  1. 我带着
    docker build
    旗帜运行
    --no-cache
  2. 我注释掉了
    RUN pnpm run build
    行,然后进入容器内部检查该文件是否存在于其中。事实并非如此。

这个文件应该在里面吗?有人遇到同样问题吗

docker vue.js dockerfile nuxt.js node-modules
1个回答
0
投票

您是否拥有

package.json
中列出的所有必需包?

🗎

package.json

{
  "name": "test",
  "private": true,
  "scripts": {
    "build": "nuxi build"
  },
  "engines": {
    "npm": "^9.0.0"
  },
  "dependencies": {
    "nuxt": "3.11.1",
    "nuxi": "3.11.1",
    "@nuxt/kit": "3.11.1"
  }
}

🗎

Dockerfile
(与所提供的相同,除了
EXPOSE
阶段省略了
base
。)

FROM node:lts-alpine as base

RUN npm install -g pnpm

WORKDIR /usr/src/app

COPY package.json pnpm-lock.yaml ./

RUN pnpm install

COPY . .

RUN pnpm run build

FROM node:lts-alpine as final

WORKDIR /app

COPY --from=base /usr/src/app/.output .

EXPOSE 3000

CMD ["node", "server/index.mjs"]

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