AWS Elastic Beanstalk Docker 来自 ECR 错误 "No Docker image specified in Dockerrun.aws.json"
AWS Elastic Beanstalk Docker From ECR Error "No Docker image specified in Dockerrun.aws.json"
我正在尝试将 docker 映像从 AWS ECR 部署到 Elastic Beanstalk。我已经为 Elastic Beanstalk 设置了对 S3 和 ECR 的所有必需权限。这些服务之间的通信似乎很好,但是在尝试启动 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
字段中指定的位置。
我是不是漏掉了什么?
原来 containerDefinitions
不适用于这种情况。我不确定我是在哪里找到它的(也许是从某处的 dockerrun 示例中找到的)。实际的属性名称如下:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "***.eu-central-1.amazonaws.com/***:latest",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "5000"
}
],
"Logging": "/var/log/nginx"
}
你没有遗漏任何东西。有同样的问题。这是因为 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 }' | sed $'s/\r//'`
...
我在环境 运行 上尝试使用 AWSEBDockerrunVersion 1
模式时遇到了这个错误 运行 "Docker 运行 on 64bit Amazon Linux 2”作为平台。错误消息没有给出任何信息。
在 64 位亚马逊 Linux 上创建一个新环境为“Docker 运行”并重新部署我原来的 Dockerrun.aws.json
解决了我的问题。您还可以将 Dockerrun.aws.json
迁移到版本 2 架构。
我正在尝试将 docker 映像从 AWS ECR 部署到 Elastic Beanstalk。我已经为 Elastic Beanstalk 设置了对 S3 和 ECR 的所有必需权限。这些服务之间的通信似乎很好,但是在尝试启动 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
字段中指定的位置。
我是不是漏掉了什么?
原来 containerDefinitions
不适用于这种情况。我不确定我是在哪里找到它的(也许是从某处的 dockerrun 示例中找到的)。实际的属性名称如下:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "***.eu-central-1.amazonaws.com/***:latest",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "5000"
}
],
"Logging": "/var/log/nginx"
}
你没有遗漏任何东西。有同样的问题。这是因为 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 }' | sed $'s/\r//'`
...
我在环境 运行 上尝试使用 AWSEBDockerrunVersion 1
模式时遇到了这个错误 运行 "Docker 运行 on 64bit Amazon Linux 2”作为平台。错误消息没有给出任何信息。
在 64 位亚马逊 Linux 上创建一个新环境为“Docker 运行”并重新部署我原来的 Dockerrun.aws.json
解决了我的问题。您还可以将 Dockerrun.aws.json
迁移到版本 2 架构。