【发布时间】:2021-06-16 16:09:40
【问题描述】:
我正在使用 terraform 在 AWS 提供商上构建基础设施。我正在使用 ECR 使用 AWSCLI 推送我的本地 docker 映像。
现在,我有一个应用程序负载均衡器,可以将流量路由到 ECS_service。我希望 ECS 使用 Fargate 管理我的 Docker 容器。但是,通过说“Essential Docker container exited”退出 docker 容器。
这是唯一打印出来的日志。
如果我将 docker 映像更改为 nginx:latest(从 dockerhub 获取)。它有效。
PS:我的 docker 容器是一个简单的节点应用程序,以 node:alpine 作为基础镜像。是不是和这个有关,我错了!
谁能提供一些关于我的方法有什么问题的见解。
我在 AWS 日志中收到以下错误:
docker-standard-init-linux-go211-exec-user-process-caused-exec-format-error.
我的 Dockerfile
FROM node:alpine
WORKDIR /app
COPY . .
RUN npm install
# Expose a port.
EXPOSE 8080
# Run the node server.
ENTRYPOINT ["npm", "start"]
他们说,这是启动脚本的问题。我只是在运行这个命令。 npm start 启动服务器。
【问题讨论】:
-
您可以为此打开日志记录并共享日志信息吗? Amazon ECS troubleshooting 有很好的关于如何调试错误的信息。
-
我已经用日志编辑了问题。如果您发现有问题,请告诉我。感谢您的回复。
-
您能否将
#!/usr/bin/env node添加到您的应用中并尝试像docker run -it <image_id> sh一样在本地运行图像,如果可行的话?可能是某些扩展名不是为linux编译的,您可能正在尝试在您的应用程序中加载,这就是错误针对exec format的原因。它适用于 nginx,因为两个图像的entrypoint不同。
标签: amazon-web-services docker amazon-ecs aws-fargate