在 AWS ECS Fargate 中 运行 Nodejs docker 时出错

Error when running Nodejs docker in AWS ECS Fargate

我们正在尝试使用 ECS 在 AWS Fargate 中部署 NodeJS Docker。代码配置为通过 GitHub -> CodeBuild -> ECR -> ECS Fargate。

当我们 运行 ECS 服务时,我们正面临 standard_init_linux.go:219: exec user process caused: exec format error。当我们在本地 运行 图像时, 运行ning 没有问题。当我们搜索此错误时,提到这是由于体系结构不匹配造成的。

Docker文件:

FROM node:14 as builder

COPY . /contents
WORKDIR /contents

RUN npm install

RUN npm run build

...


EXPOSE 3000

我们尝试的 CodeBuild 架构是

  1. AL2 aarch64 1.0/2.0
  2. AL2 x86-64 2.0/3.0
  3. Ubuntu 3.0/4.0/5.0

对于 CodeBuild,节点 14 的正确环境是什么?还有其他可能导致问题的原因吗?

感谢任何帮助。谢谢!

正如您所指出的,此问题通常是由体系结构不匹配引起的。 Fargate 不支持(目前)Graviton/Arm 架构,它始终需要基于 x86-64 的映像。因为 Codebuild 支持多种架构,所以 很可能 这就是不匹配发生的地方。不要将 AL2 aarch64 1.0/2.0 与 CodeBuild 一起使用,因为该选项将提供一个 Graviton/Arm 环境来构建,因此生成的图像将无法在 Fargate 上运行。另外两个应该生成与 Fargate 兼容的图像。

试金石(以确保这是由于体系结构不匹配造成的)将是即时提供一个小 Graviton based instance 并测试在 Fargate 上失败并显示该错误消息的 SAME 容器映像。如果它适用于 Graviton,那就是问题所在。