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

Dmi*_*kiy 4 amazon-ec2 amazon-web-services docker amazon-elastic-beanstalk

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"
}
Run Code Online (Sandbox Code Playgroud)

但是,是否可以挂载特定的EBS音量?

我需要在Docker容器中运行db并使用Beanstalk进行部署。显然,我需要数据的持久性,数据库的备份/还原等。

Roh*_*nga 5

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

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

option_settings:
   - namespace: aws:autoscaling:launchconfiguration
     option_name: BlockDeviceMappings
     value: /dev/sdj=:100,/dev/sdh=snap-51eef269,/dev/sdb=ephemeral0
Run Code Online (Sandbox Code Playgroud)

映射的格式为device name = volume,其中设备映射指定为单个字符串,且映射之间用逗号分隔。此示例将一个100 GB的空Amazon EBS卷,具有快照ID snap-51eef269的Amazon EBS卷以及一个实例存储卷附加到自动伸缩组中的所有实例。

在此处阅读有关此选项设置的更多详细信息。在此处阅读有关ebextensions的更多信息。

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