【问题标题】:Node app docker image runs locally and fails on Amazon ECS节点应用程序 docker 映像在本地运行并在 Amazon ECS 上失败
【发布时间】:2021-08-23 08:07:33
【问题描述】:

该应用程序在本地部署和运行很长一段时间都没有问题。然而,在 Amazon ECS 上,它似乎总是在闲置大约 2:30 分钟后崩溃。怎么了?

Dockerfile

# Set the node alpine base image
FROM node:15-alpine

# Establish app working directory
WORKDIR /app

# Setup app workspace
COPY app.js .
COPY package.json .
COPY package-lock.json .

COPY app/ app

# Install app dependencies
RUN npm install

# Document listener port
EXPOSE 80

# Run listener
CMD [ "npm", "start" ]

Amazon ECS 任务日志

2021-06-05 17:33:20     npm ERR! A complete log of this run can be found in:
2021-06-05 17:33:20     npm ERR! /root/.npm/_logs/2021-06-05T15_33_20_563Z-debug.log
2021-06-05 17:33:20     npm ERR! command failed
2021-06-05 17:33:20     npm ERR! signal SIGTERM
2021-06-05 17:33:20     npm ERR! command sh -c node app
2021-06-05 17:33:20     npm ERR! path /app
2021-06-05 17:33:20     npm notice
2021-06-05 17:33:20     npm notice New minor version of npm available! 7.7.6 -> 7.16.0
2021-06-05 17:33:20     npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.16.0>
2021-06-05 17:33:20     npm notice Run `npm install -g npm@7.16.0` to update!
2021-06-05 17:33:20     npm notice
2021-06-05 17:30:50     Server started at 0.0.0.0:80 ..
2021-06-05 17:30:46     > demo@1.0.0 start
2021-06-05 17:30:46     > node app

【问题讨论】:

    标签: amazon-web-services docker npm amazon-ecs


    【解决方案1】:

    问题在于 ELB 运行状况检查。运行状况检查的默认位置在路径“/”上,并且由于 Web 应用程序的设计,该位置没有返回 200 OK。将运行状况检查路径配置为返回 200 OK 的内容解决了该问题。此外,在某些情况下,考虑到 ECS 服务的健康检查宽限期也可能是相关的。

    【讨论】:

    • 我刚刚开始使用 ECS。对我来说,我使用两个不同的端口 8080 和 5000 进行了两个任务定义,并且我为这两个端口使用了相同的目标组。所以健康检查是用错误的端口杀死容器。我为另一个具有正确配置的容器创建了另一个目标组,并将其添加到负载均衡器中。现在一切正常!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 2021-01-25
    • 2017-03-05
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多