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 服务之前配置了负载均衡器并且健康检查失败(因此强制回收容器)?
我将 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 服务之前配置了负载均衡器并且健康检查失败(因此强制回收容器)?