NestJS / Prisma Docker 容器在 AWS Fargate 上失败

NestJS / Prisma Docker Container fails on AWS Fargate

我将 docker 容器中基于 nestjs 的后端部署到 AWS fargate。部署有效,容器可访问,健康检查为绿色。一切都按预期正常工作。大约 5 分钟后,出现以下错误,容器任务不再可访问并重新启动。我不知道发生了什么,我做错了什么。

这是来自 Cloudwatch 的错误日志:

npm timing command:run-script Completed in 305483ms
npm notice 
npm notice New minor version of npm available! 8.1.2 -> 8.3.0
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v8.3.0>
npm notice Run `npm install -g npm@8.3.0` to update!
npm notice 
npm verb stack Error: command failed
npm verb stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/index.js:64:27)
npm verb stack     at ChildProcess.emit (node:events:390:28)
npm verb stack     at maybeClose (node:internal/child_process:1064:16)
npm verb stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5)
npm verb pkgid backend@0.0.1
npm verb cwd /
npm verb Linux 4.14.248-189.473.amzn2.x86_64
npm verb argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "start:prod" "--verbose"
npm verb node v16.13.1
npm verb npm  v8.1.2
npm ERR! path /
npm ERR! command failed
npm ERR! signal SIGTERM
npm ERR! command sh -c npm run migrate:deploy && node dist/main
npm verb exit 1
npm timing npm Completed in 305969ms
npm verb code 1
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-12-14T12_24_28_315Z-debug.log

这是我的 docker 文件:

FROM node:16 as build-stage

WORKDIR /app
COPY package*.json ./
COPY prisma ./prisma/

RUN npm install
COPY . .

RUN npm run build

FROM node:16

COPY --from=build-stage /app/node_modules ./node_modules
COPY --from=build-stage /app/prisma ./prisma
COPY --from=build-stage /app/resources ./resources
COPY --from=build-stage /app/package*.json ./
COPY --from=build-stage /app/dist ./dist

EXPOSE 3001
CMD [ "npm", "run", "start:prod", "--verbose"]

如果有人能帮助我,我将非常高兴和感激:) 谢谢。

您似乎收到了 SIGTERM。是否有可能您在 ECS 服务之前配置了负载均衡器并且健康检查失败(因此强制回收容器)?