弹性Beanstalk Docker容器的持久存储

8

我正在寻找一种方法将S3存储桶(例如)作为Docker容器中的Elastic Beanstalk Docker卷挂载。

由于我无法更改应用程序代码,因此我必须在Dockerrun.aws.json文件中使用Docker卷来配置该部分。

我需要挂载一个单独的配置文件和一个文件目录卷到我的应用程序中。

这是我的Dockerrun.aws.json文件。

{
    "AWSEBDockerrunVersion": "1",

    "Image": {
        "Name": "app"
    },
    "Ports": [
        {
            "ContainerPort": 8080,
            "HostPort" : 80
        }

    ],
    "environment": [
        {
          "name": "app_DB_MYSQL",
          "value": ""
        },
        {
            "name": "app_DB_USERNAME",
            "value": "app"
        },
        {
            "name": "app_DB_PASSWORD",
            "value": ""
        },
        {
            "name": "app_DB_DATABASE",
            "value": "app"
        }
      ],

      "volumes": [
        {
            "HostDirectory": "files",
            "containerPath": "/usr/src/app/files",
        },

        {
            "HostDirectory": "configuration.yaml",
            "containerPath": "/usr/src/app/config/configuration.yaml",
        }
      ],

    "Logging": "/var/log",

}

你能找到解决方法了吗? - Ashwin K Joseph
我能想到的唯一解决方案是使用多容器设置,两个容器都挂载到同一个卷上。第一个容器是你的应用程序,而第二个容器则是监视器,它会监视新文件并将其上传到S3。我不确定这是否是一个可靠或好的解决方案。 - Ashwin K Joseph
1个回答

0

通常情况下,使用Amazon Elastic File System的Elastic Beanstalk进行持久性存储:

  1. 编辑storage-efs-createfilesystem.config,将其添加到.ebextensions目录中并部署
  2. 然后从.ebextensions中删除storage-efs-createfilesystem.config,编辑并添加storage-efs-mountfilesystem.config到.ebextensions中,编辑Dockerrun.aws.json以匹配storage-efs-mountfilesystem.config并重新部署。

示例storage-efs-mountfilesystem.config摘录:

option_settings:
  aws:elasticbeanstalk:application:environment:
    FILE_SYSTEM_ID: 'fs-REPLACE_THIS_WITH_ID!'
    MOUNT_DIRECTORY: '/efs'

示例 Dockerrun.aws.json 提取:

"Volumes": [
    {
        "HostDirectory": "/efs/app",
        "ContainerDirectory": "/usr/src/app",
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接