Elastic Beanstalk Docker 容器上的持久存储

Aur*_*ien 8 persistent-storage amazon-web-services docker amazon-elastic-beanstalk docker-volume

我正在寻找某种方法将 S3 存储桶(例如)作为 Docker 卷安装在 Elastic Beanstalk Docker 容器中。

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

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

这是我的 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",

}
Run Code Online (Sandbox Code Playgroud)

pba*_*pba 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'
Run Code Online (Sandbox Code Playgroud)

Dockerrun.aws.json提取示例:

"Volumes": [
    {
        "HostDirectory": "/efs/app",
        "ContainerDirectory": "/usr/src/app",
    }
Run Code Online (Sandbox Code Playgroud)