在AWS beanstalk下将特定的EBS卷挂载到Docker

AWS Beanstalk可以从Docker容器运行应用程序。 如文档( http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html )中所述,可以在Dockerrun.aws.json中将目录映射写入EC2卷:

"Volumes": [ { "HostDirectory": "/var/app/mydb", "ContainerDirectory": "/etc/mysql" } 

但是,可以挂载特定的EBS卷吗?

Fe我需要在Docker容器中运行db并使用Beanstalk进行部署。 很明显,我需要持续的数据,备份/恢复数据库等。

您可以在任何Beanstalk环境中挂载EBS卷。 该卷将在EC2实例上可用。

您可以使用ebextensions选项设置来执行此操作。 使用以下内容在应用程序源代码.ebextensions/01-ebs.config创build一个文件:

 option_settings: - namespace: aws:autoscaling:launchconfiguration option_name: BlockDeviceMappings value: /dev/sdj=:100,/dev/sdh=snap-51eef269,/dev/sdb=ephemeral0 

映射的格式是device name = volume,其中设备映射被指定为单个string,映射之间用逗号分隔。 此示例将附加到自动调节组中的所有实例,一个空的100-GB Amazon EBS卷,一个带快照ID snap-51eef269的Amazon EBS卷和一个实例存储卷。

在这里阅读关于这个选项的更多细节。 在这里阅读更多有关ebextensions的信息 。

一旦为beanstalk环境实例安装了EBS卷,就可以使用上面的卷映射根据需要映射目录。

我猜leg100 / docker-ebs-attach Docker容器是做你想做的,也就是使一个特定的现有EBS卷可用。 您可以复制.py文件和相关的Dockerfile语句,也可以创build一个多容器EB设置,并从此容器安装卷。

顺便说一句,我已经试图挂载一个新的EBS卷由Rohit(+命令来格式化和挂载它)的build议,它的工作,但docker不会看到装载,直到docker守护程序重新启动 。