Amazon web services 在dockrun.aws.json中设置卷大小

Amazon web services 在dockrun.aws.json中设置卷大小,amazon-web-services,docker,amazon-ec2,amazon-elastic-beanstalk,Amazon Web Services,Docker,Amazon Ec2,Amazon Elastic Beanstalk,嘿,我正在通过elastic beanstalk部署我的多容器docker env My docker-compose.yml的条目如下 service: image: redis volumes: - redisdata:/data volumes: redisdata: 通过这种方式,redisdata的内容被分发到磁盘并“生存”部署 在dockrun.aws.json端,这将导致 { "AWSEBDockerrunVersion": 2,

嘿,我正在通过elastic beanstalk部署我的多容器docker env

My docker-compose.yml的条目如下

service:
    image: redis
    volumes:
        - redisdata:/data
volumes:
    redisdata:
通过这种方式,redisdata的内容被分发到磁盘并“生存”部署

在dockrun.aws.json端,这将导致

{
    "AWSEBDockerrunVersion": 2,
    "containerDefinitions": [
        {
            "essential": true,
            "image": "redis",
            "mountPoints": [
                {
                    "containerPath": "/data",
                    "sourceVolume": "Redisdata"
                }
            ],
            "name": "redis"
        }
    ],
    "family": "",
    "volumes": [
        {
            "host": {
                "sourcePath": "redisdata"
            },
            "name": "Redisdata"
        }
    ]
}
现在我的问题是:

ec2-instance $ df -h
/dev/xvda1      7,8G    7,7G     0  100% /
/dev/dm-3        99G     89M   94G    1% /var/lib/docker/devicemapper/mnt/2d33cb679881808fac34182bfbec8feb57bf5f65c81c51b52c3f6c9917541040
创建的卷redisdata只有7,7 GB大小,其中redis容器的主根文件系统的大小为99 GB。这是将此类命名卷装载到ec2实例上的
/var/app/current/redisdata
的结果,而此文件夹只是8GB根装载的一部分。 如何将尺寸规格添加到dockrun.aws.json


我已经看到了在dockrun.aws.json中指定“标准”装载点的选项,但是如何确保创建了source dir并且它有足够的空间呢

到目前为止,我找到的唯一解决方案是修改ebextension配置文件

我创建了一个包含内容的文件
.ebextensions/bla.config

option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: RootVolumeSize
    value: "100"
这样,docker容器的根卷将有100GB

警告:部署此附加文件将擦除您的ec2实例,ec2实例上的任何数据(包括docker卷)都将丢失

编辑:添加外部EBS设备的附加解决方案 这是我从AWS支持中得到的:

通过执行上述步骤,可以添加外部EBS设备 已成功将其装载到docker容器。还有,我建议你 考虑使用弹性文件系统(EFS)的选择 永久存储。EFS的优点是它是存储 容量是有弹性的,即使 环境EC2实例意外终止。这是你的电话号码 blog[6]提供了将EFS卷装载到弹性磁盘的步骤 Beanstalk环境实例

下面是用于添加外部EBS设备(的)的.ebextensions配置文件 beanstalk环境实例的大小(30GB)。您还可以添加 带快照的EBS卷

下面是创建卷的“dockrun.aws.json”文件的片段 源路径为“/media/volume1”

[root@ip-172-31-21-181 multi-dockerapp]# cat .ebextensions/ebs.config commands:   
01mkfs:
    command: "mkfs -t ext3 /dev/sdh"   02mkdir:
    command: "mkdir /media/volume1"   03mount:
    command: "mount /dev/sdh /media/volume1"
option_settings:   
    aws:autoscaling:launchconfiguration:
        InstanceType: t2.large
        EC2KeyName: eks
        MonitoringInterval: "1 minute"
        IamInstanceProfile: "aws-elasticbeanstalk-ec2-role"
        BlockDeviceMappings: "/dev/sdh=:30,/dev/sdj=snap-51eef269"
[root@ip-172-31-21-181 multi-dockerapp]# cat Dockerrun.aws.json 
{   "AWSEBDockerrunVersion":

2,   "volumes": [
    {
      "name": "php-app",
      "host": {
        "sourcePath": "/media/volume1"
      }
    },
    ....
    "containerDefinitions": [
      {
        .....
      "mountPoints": [
        {
          "sourceVolume": "php-app",
          "containerPath": "/var/www/html"
        }
      ]
    } }