在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守护程序重新启动 。
- EFS卷未安装在Elastic Beanstalk上的Docker容器上
- 使用Spinnaker从dockerhub部署Docker镜像到Aws Eb
- Docker:ECS vs Beanstalk与Docker Cloud
- 在EC2上的Docker,dockerfile中的RUN命令不能读取环境variables
- 将Elastic Beanstalk环境variables暴露给使用Docker的Laravel的技术人员
- AWS Elastic Beanstalk中的多容器Dockerconfiguration版本错误
- 如何在Elastic Beanstalk中增加Docker中的ulimit?
- 如何通过Elasticbeanstalkconfiguration文件(使用Docker)访问环境variables?
- 在Dockerrun.aws.json中做什么“日志logging”?