AWS Elastic Beanstalk Docker 多容器部署错误,无法设置内存

AWS Elastic Beanstalk Docker 多容器部署错误,无法设置内存

我正在使用 Elastic Beanstalk 的多容器 Docker 配置将我的一个 AWS Elastic Beanstalk 应用程序转换为 Docker。我已经创建了一个具有新环境的新 EB 应用程序。当我尝试部署我的Dockerrun.aws.json配置时,EB 最终失败,并在事件选项卡中显示以下错误:

Service:AmazonECS, Code:ClientException, Message:Invalid setting for 
container 'api'. At least one of 'memory' or 'memoryReservation' must 
be specified., Class:com.amazonaws.services.ecs.model.ClientException

我的Dockerrun.aws.json配置大致如下:

{
    "AWSEBDockerrunVersion": 2,
    "containerDefinitions": [
        {
            "name": "api_proxy",
            "image": "{account_id}.dkr.ecr.us-east-1.amazonaws.com/{repo}:latest",
            "essential": true,
            "memory": 128,
            "portMappings": [
                {
                    "hostPort": 80,
                    "containerPort": 80
                }
            ],
            "links": [
                "api"
            ]
        },
        {
            "name": "api",
            "image": "{account_id}.dkr.ecr.us-east-1.amazonaws.com/{repo}:latest",
            "environment": {
                "DJANGO_SETTINGS_MODULE": "api.aws"
            },
            "essential": true,
            "memory": 128
        }
    ]
}

任何帮助都将受到感激。

更新2018-02-15:

我当前的部署过程如下。我首先创建 Docker 映像并将其上传到 Amazon 的 ECR。然后我压缩文件Dockerrun.aws.json。由于这是在新的 AWS EB 环境中首次部署应用程序,因此我目前正在环境创建过程中上传 zip 文件。我选择的平台是Preconfigured platform: Multi-container Docker。对于应用程序代码,我上传包含该文件的 zip 文件Dockerrun.aws.json

答案1

据我所知文档外- 环境选项应该是对象数组,因此你的 json 应该看起来像

{
    "AWSEBDockerrunVersion": 2,
    "containerDefinitions": [{
        "name": "api",
        "image": "nginx:latest",
        "essential": true,
        "memory": 128,
        "environment": [{
            "name": "DJANGO_SETTINGS_MODULE",
            "value": "api.aws"
        }]
    },{
        "name": "api_proxy",
        "image": "nginx:latest",
        "essential": true,
        "memory": 128,
        "links": ["api"],
        "portMappings": [{
            "hostPort": 80,
            "containerPort": 80
        }]
    }]
}

至少我能够使用上面的 json 运行环境

相关内容