AWS Elastic Beanstalk Docker 来自 ECR 错误“Dockerrun.aws.json 中未指定 Docker 映像”

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk Docker 来自 ECR 错误“Dockerrun.aws.json 中未指定 Docker 映像”【英文标题】:AWS Elastic Beanstalk Docker From ECR Error "No Docker image specified in Dockerrun.aws.json" 【发布时间】:2019-06-09 21:22:50 【问题描述】:

我正在尝试将 Docker 映像从 AWS ECR 部署到 Elastic Beanstalk。我已经为 S3 和 ECR 设置了 Elastic Beanstalk 所需的所有权限。这些服务之间的通信似乎很好,但是在尝试启动 Elastic Beanstalk 环境时出现以下错误:

    No Docker image specified in either Dockerfile or Dockerrun.aws.json. Abort deployment. [Instance: i-01cf0bac1863e4eda] Command failed on instance. Return code: 1 Output: No Docker image specified in either Dockerfile or Dockerrun.aws.json. Abort deployment. Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

我正在上传一个指向 ECR 上的图像的 Dockerrun.aws.json。以下是我的Dockerrun.aws.json 文件:


  "AWSEBDockerrunVersion": "1",
  "containerDefinitions": 
    "Name": "***.eu-central-1.amazonaws.com/***:latest",
    "Update": "true"
  ,
  "Ports": [
    
      "ContainerPort": "5000"
    
  ],
  "Logging": "/var/log/nginx"

Docker 映像确实存在于 ECR 上 containerDefinitions Name 字段中指定的位置。

我错过了什么吗?

【问题讨论】:

【参考方案1】:

原来containerDefinitions 不适用于这种情况。我不确定我在哪里找到它(可能来自某处的 dockerrun 样本)。实际属性名称如下:


  "AWSEBDockerrunVersion": "1",
  "Image": 
    "Name": "***.eu-central-1.amazonaws.com/***:latest",
    "Update": "true"
  ,
  "Ports": [
    
      "ContainerPort": "5000"
    
  ],
  "Logging": "/var/log/nginx"

【讨论】:

【参考方案2】:

你没有错过任何东西。有同样的问题。这是因为 Dockerfile 编码。使用 UTF-8 而不是 UTF-8-BOM。更多细节在这里: https://github.com/verygood-ops/eb_docker/blob/master/elasticbeanstalk/hooks/appdeploy/pre/03build.sh#L58

    FROM_IMAGE=`cat Dockerfile | grep -i ^FROM | head -n 1 | awk ' print $2 ' | sed $'s/\r//'`

...

【讨论】:

【参考方案3】:

我在运行“Docker running on 64bit Amazon Linux 2”作为平台的环境中尝试使用 AWSEBDockerrunVersion 1 架构时遇到此错误。错误消息没有给出任何信息。

创建一个新环境作为“在 64 位 Amazon Linux 上运行的 Docker”并重新部署我原来的 Dockerrun.aws.json 为我解决了这个问题。您还可以将 Dockerrun.aws.json 迁移到版本 2 架构。

【讨论】:

以上是关于AWS Elastic Beanstalk Docker 来自 ECR 错误“Dockerrun.aws.json 中未指定 Docker 映像”的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk CLI 安装错误

text AWS Elastic Beanstalk

HTTPS Elastic Beanstalk (AWS) 到 Android

AWS Elastic Beanstalk 无法担任角色

AWS Elastic Beanstalk

AWS Elastic Beanstalk chown PythonPath 错误