在 dockerizing nestjs 应用程序时出错
Posted
技术标签:
【中文标题】在 dockerizing nestjs 应用程序时出错【英文标题】:Getting an error on dockerising nest.js application 【发布时间】:2020-06-18 15:42:03 【问题描述】:我正在开发一个 Nest.js 应用程序,这是我们拥有的 Dockerfile。当我运行它时,我在 docker 中的 npm run build
步骤上遇到错误。
这是 package.json 中的构建任务。
"build": "nest build"
sh: nest: not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! atom-qbuilder-api@0.0.1 build: `nest build`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the atom-qbuilder-api@0.0.1 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Dockerfile
# Build
FROM node:8-alpine as builder
COPY package.json /usr/src/atom/package.json
COPY package-lock.json /usr/src/atom/package-lock.json
WORKDIR /usr/src/atom
# Install dependencies
RUN npm install --production --loglevel warn
ARG APPLICATION
ARG BRANCH
ARG BUILD_NUMBER
ARG SHA
ENV NODE_ENV qa
ENV VERSION 1.0.0
## Copy app directory in container and set workdir
COPY . /usr/src/atom
# Build & Test Coverage
RUN set -x \
&& npm run build \
&& echo " \"status\": \"Ok\", \"result\": \"version\": \"$VERSION\", \"branchName\": \"$BRANCH\", \"SHA\": \"$SHA\", \"buildDate\": \"$(date)\", \"buildNumber\": \"$BUILD_NUMBER\", \"environment\": \"$NODE_ENV\" " > build.json
# Release
FROM node:8-alpine
ENV PORT 3000
COPY --from=builder /usr/src/atom/node_modules /usr/src/atom/node_modules
COPY --from=builder /usr/src/atom/dist /usr/src/atom/dist
COPY --from=builder /usr/src/atom/package.json /usr/src/atom/package.json
COPY --from=builder /usr/src/atom/build.json /usr/src/atom/build.json
WORKDIR /usr/src/atom
EXPOSE $PORT
## Run supervisor as foreground process
CMD bash -c "npm run start:prod && /usr/bin/supervisord"
【问题讨论】:
【参考方案1】:@nestjs/cli
(nest
命令的来源)默认位于devDependencies
。除非您在package.json
中修改了您的部门,否则运行npm i --production
将不会安装@nestjs/cli
,这将导致您当前遇到的错误。您可以使用多阶段 dockerfile 或将 @nestjs/cli
移动到您的 dependencies
而不是 devDeps。
【讨论】:
以上是关于在 dockerizing nestjs 应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章
Docker 中的 NestJS 无法在另一个 Docker 容器中的 Postgres 上执行 Prisma Migrate
无法将 MongoDB 与 NestJS ( Docker ) 连接
MongooseModule:无法连接到数据库。在带有 Mongo 的 dockerized Nestjs 应用程序上