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/

10-11 09:22