无法通过docker RUN在docker文件中安装@types/node

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

当我使用以下 Dockerfile 时:

FROM node:22-alpine

ENV NODE_ENV production

WORKDIR /usr/web-server

RUN npm i -g @nestjs/cli typescript

COPY ./package*.json ./

RUN npm install
RUN npm install @types/node

COPY ./ ./

EXPOSE 4000

CMD npm run start:dev

node_modules/@types 节点文件夹内未安装。

但是,如果我使用下面的 Dockerfile:

FROM node:22-alpine

ENV NODE_ENV production

WORKDIR /usr/web-server

RUN npm i -g @nestjs/cli typescript

COPY ./package*.json ./
RUN npm install
RUN npm uninstall @types/node
RUN npm install @types/node

COPY ./ ./

EXPOSE 4000

CMD npm run start:dev

一切工作正常。

为什么在第一个 Dockerfile 中

RUN npm install @types/node
不要在 @types 中安装 node 文件夹?

我尝试

RUN npm install @types/node
之后
COPY ./ ./
它也不起作用

docker npm docker-compose
1个回答
0
投票

您确定您的 @types/node 中指定的

package.json
版本
没有冲突吗?例如,假设您已在
package.json
:

中指定了此内容
"@types/node": "^16.0.0"

从 Dockerfile 安装

这样的东西将使您能够从

Dockerfile
安装,而无需先卸载。

🗎

Dockerfile

FROM node:22-alpine

ENV NODE_ENV production

WORKDIR /usr/web-server

RUN npm i -g @nestjs/cli typescript

COPY ./package*.json ./
RUN npm install
RUN npm install @types/node

COPY ./ ./

EXPOSE 4000

CMD npm run start:dev

🗎

package.json
(请注意,这不包含
@types/node
@nestjs/cli
typescript
,所有这些都是从
Dockerfile
安装的!)

  "name": "nestjs-web-server",
  "version": "1.0.0",
  "description": "A simple NestJS web server",
  "main": "src/main.ts",
  "scripts": {
    "start:dev": "nest start --watch"
  },
  "dependencies": {
    "@nestjs/common": "^9.0.0",
    "@nestjs/core": "^9.0.0",
    "@nestjs/platform-express": "^9.0.0"
  },
  "devDependencies": {
    "@nestjs/testing": "^9.0.0",
    "prettier": "^2.7.1",
    "eslint": "^8.15.0",
    "jest": "^29.0.0"
  }
}

从 package.json 安装

恕我直言,更好的选择是将软件包安装完全移至

package.json
。通过下面的设置,所有软件包都安装在一个
npm install
命令中。

🗎

Dockerfile

FROM node:22-alpine

ENV NODE_ENV production

WORKDIR /usr/web-server

COPY ./package*.json ./
RUN npm install

COPY ./ ./

EXPOSE 4000

CMD npm run start:dev

🗎

package.json

{
  "name": "nestjs-web-server",
  "version": "1.0.0",
  "description": "A simple NestJS web server",
  "main": "src/main.ts",
  "scripts": {
    "start:dev": "npx nest start --watch"
  },
  "dependencies": {
    "@nestjs/common": "^9.0.0",
    "@nestjs/core": "^9.0.0",
    "@nestjs/cli": "^9.0.0",
    "@nestjs/platform-express": "^9.0.0"
  },
  "devDependencies": {
    "@nestjs/testing": "^9.0.0",
    "@types/node": "^20.0.0",
    "typescript": "^4.6.3",
    "prettier": "^2.7.1",
    "eslint": "^8.15.0",
    "jest": "^29.0.0"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.