我正在尝试将AWS ECR中的docker映像部署到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.
我要上传一个指向Dockerrun.aws.json
的文件,它指向ECR上的图像。以下是我的Dockerrun.aws.json
文件:
{
"AWSEBDockerrunVersion": "1",
"containerDefinitions": {
"Name": "***.eu-central-1.amazonaws.com/***:latest",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "5000"
}
],
"Logging": "/var/log/nginx"
}
泊坞窗映像确实存在于containerDefinitions
Name
字段中指定位置的ECR上。
我在这里想念东西吗?
答案 0 :(得分:1)
结果证明containerDefinitions
在这种情况下不适用。我不确定在哪里找到它(也许来自某处的dockerrun示例)。实际的属性名称如下:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "***.eu-central-1.amazonaws.com/***:latest",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "5000"
}
],
"Logging": "/var/log/nginx"
}
答案 1 :(得分:0)
您什么都不丢失。有同样的问题。这是因为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//'`
...
答案 2 :(得分:0)
在以“在64位Amazon Linux 2 上运行的Docker”为平台的环境中尝试使用AWSEBDockerrunVersion 1
模式时,我遇到了此错误。该错误消息没有解决任何问题。
创建一个新环境“在64位Amazon Linux上运行Docker”并重新部署我原来的Dockerrun.aws.json
可以为我解决此问题。您也可以将Dockerrun.aws.json
迁移到版本2架构。