在 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 架构是
- AL2 aarch64 1.0/2.0
- AL2 x86-64 2.0/3.0
- 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,那就是问题所在。
我们正在尝试使用 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 架构是
- AL2 aarch64 1.0/2.0
- AL2 x86-64 2.0/3.0
- 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,那就是问题所在。