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 卷?
F.e.我需要在 Docker 容器中运行 db 并使用 Beanstalk 部署它。很明显,我需要数据的持久性、数据库的备份/恢复等。
最佳答案
您可以在任何 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
映射的格式是设备名称=卷,其中设备映射被指定为单个字符串,映射以逗号分隔。此示例将一个空的 100 GB Amazon EBS 卷、一个快照 ID 为 snap-51eef269 的 Amazon EBS 卷和一个实例存储卷附加到自动缩放组中的所有实例。
阅读有关此选项设置 here 的更多详细信息。
阅读有关 ebextensions here 的更多信息。
为 beanstalk 环境实例安装 EBS 卷后,您可以使用上述卷映射根据需要映射目录。
关于amazon-web-services - 在 AWS beanstalk 下将特定的 EBS 卷挂载到 Docker,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25126850/