如何将卷挂载到 AWS Beanstalk 部署的 Docker 容器

问题描述 投票:0回答:1

我有一个 docker 容器 Web 应用程序,它在 AWS Elastic Beanstalk 上部署的端口 8443(用于管理控制台)、9443(应用程序流量)上工作。这个应用程序需要一个我们从这个应用程序本身的管理控制台上传的配置文件,它存储在 docker 容器文件夹中。

所以现在的问题是,如果我在 Elastic Beanstalk 的负载平衡设置中使用 HA 对,我需要两个 EC2 实例具有相同的配置文件,该文件存储在 /usr/local/myapplciation/localstorage/.

我尝试在 docker-compose 文件中添加标签下方的卷,但这对我不起作用。

    volumes:
        - /var/app/staging/:/usr/local/myapplciation/localstorage/
        - /var/app/current/:/usr/local/myapplciation/localstorage/

基本上我需要挂载共享卷(除了 EFS),请告诉我如何挂载 s3 存储桶。

我尝试将配置文件与带有 zip 包的 dockercompose 文件一起上传,但是没有帮助,因为我需要将它移动到 ec2 实例中的 docker 容器中。

我确实想像下面的标签一样使用它,因为它不会在负载平衡环境或升级时工作。

{
  "Volumes": [
    {
      "HostDirectory": "/path/inside/host",
      "ContainerDirectory": "/path/inside/container"
    }
  ]

如果您需要更多详细信息,请告诉我。

如果您知道如何将 S3 存储桶挂载到 ContainerDirectory ,请指教。

谢谢

amazon-web-services amazon-s3 amazon-ec2 docker-compose amazon-elastic-beanstalk
1个回答
0
投票

如果您想在 S3 中存储图像和数据,请使用 S3 集成而不是安装卷
对于 NodeJs S3 上传:https://flaviocopes.com/node-aws-s3-upload-image/
对于 PHP Laravel S3 上传:https://www.tutsmake.com/upload-file-to-aws-s3-bucket-in-php/

参考上述文档或使用替代和最佳解决方案为此推荐以下

您必须首先在与 EB 环境相同的可用区 (AZ) 中创建一个 Elastic Block Store 卷。您可以在 AWS 管理控制台、AWS CLI 或 AWS 开发工具包中创建 EBS 卷。

在应用程序源代码的 .ebextensions 目录中创建一个名为 01_mount.config 的文件。此文件应包含以下 YAML 配置:

commands:
  01_mount:
    command: "mkdir -p /path/to/mount && mount /dev/xvdf /path/to/mount"

将 /path/to/mount 替换为您要挂载卷的 Docker 容器上的路径,并将 /dev/xvdf 替换为分配给 EBS 卷的设备名称。

部署 EB 挂载卷

© www.soinside.com 2019 - 2024. All rights reserved.