【问题标题】:The container gets exited with react app in ECS容器通过 ECS 中的 react 应用程序退出
【发布时间】:2020-08-19 01:54:20
【问题描述】:

我在 ECS 中运行 React 应用程序。已创建 docker 映像并通过 jenkins 管道推送到 ECR。ECS 容器通过 terraform 代码创建。但是容器以代码 0 退出并开始新的容器。这变成了一个循环。当我尝试使用来自同一图像的命令手动创建容器时,容器仍然处于活动状态。当 ECS EC2 中使用相同的图像时,容器被创建并退出。 当我从云手表检查日志时,我得到的日志为 不是来自 webpack 的内容由 /app/public 提供 404 将回退到 /

enter code here

      FROM node:13.12.0-alpine

      # set working directory
      WORKDIR /app

      # add `/app/node_modules/.bin` to $PATH
      ENV PATH /app/node_modules/.bin:$PATH

      # install app dependencies
      COPY package.json ./
      COPY package-lock.json ./
      RUN npm install --silent
      RUN npm install react-scripts@3.4.1 -g --silent

      # add app
      COPY . ./

      # start app
      ENTRYPOINT ["npm", "start"]

【问题讨论】:

  • 您正在使用 ecs farget,这意味着由于内存或 cpu 资源没有问题。如果您可以检查服务事件和错误日志,您可能会有所了解。 aws.amazon.com/premiumsupport/knowledge-center/…
  • 感谢您的回复,但我没有使用 fargate。我使用的是 ec2 linux。从 cloudwatch 日志中我得到的不是来自 webpack 的内容是从 /app/public 404s 将回退到 / 但是当我通过手动提供命令来运行具有相同图像的容器时 docker run -dit --name -p imagename容器被创建并稳定。但是当我使用 ECS(相同图像)自动化时,容器正在退出。
  • 我不是 100% 确定,但看起来容器进程正在以退出代码 0 完成。如果可以,请将其添加到 ECS:stdin_open: true 并检查哪个容器将继续运行并且它不会退出
  • 添加 stdin_open: true, tty: true 将与使用 docker run -it 运行容器相同

标签: reactjs docker dockerfile amazon-ecs


【解决方案1】:

请添加(在 docker-compose 中使用)

stdin_open: true
tty: true

因为容器正在以退出代码 0 退出。

这相当于使用-it 选项运行容器。

对于 ECS 应该是这样的

在任务配置中单击“通过 JSON 配置”按钮。将 pseudoTerminal 属性更改为 true。 "pseudoTerminal": true

【讨论】:

猜你喜欢
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 2019-08-20
相关资源
最近更新 更多