如何解决在 AWS ECS Fargate 中运行 Nodejs docker 时出错
我们正在尝试使用 ECS 在 AWS Fargate 中部署 NodeJS Docker。代码配置为通过 GitHub -> CodeBuild -> ECR -> ECS Fargate。
我们在运行 ECS 服务时面临 standard_init_linux.go:219: exec user process caused: exec format error
。当我们在本地运行图像时,它运行没有问题。当我们搜索这个错误时,有人提到这是由于架构不匹配造成的。
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
Node 14 for CodeBuild 的正确环境是什么?是否还有其他原因可能导致此问题?
感谢任何帮助。谢谢!
解决方法
正如您所指出的,此问题通常是由架构不匹配引起的。 Fargate 不支持(尚) Graviton/Arm 架构,它总是期望基于 x86-64 的图像。因为 Codebuild 支持多种架构,很可能这就是发生不匹配的地方。请勿将 AL2 aarch64 1.0/2.0
与 CodeBuild 一起使用,因为该选项将提供要构建的 Graviton/Arm 环境,因此生成的图像将无法在 Fargate 上运行。另外两个应该生成与 Fargate 兼容的图像。
试金石测试(以确保这是由于架构不匹配造成的)是动态配置一个小的 Graviton based instance 并测试在 Fargate 上失败并显示该错误消息的 SAME 容器映像。如果它适用于 Graviton,那就是问题所在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。