Estoy buscando alguna forma de montar un depósito de almacenamiento S3 (por ejemplo) como volumen de Docker en un contenedor de Docker de Elastic Beanstalk.
Como no puedo cambiar el código de la aplicación, tengo que configurar esa parte en el archivo Dockerrun.aws.json usando los volúmenes de Docker.
Necesito montar un archivo para un solo archivo de configuración y un volumen para un directorio de archivos en mi aplicación.
Aquí está mi archivo 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", }
Para el almacenamiento persistente, generalmente se usa Elastic Beanstalk con Amazon Elastic File System :
Ejemplo de extracción de storage-efs-mountfilesystem.config:
option_settings: aws:elasticbeanstalk:application:environment: FILE_SYSTEM_ID: 'fs-REPLACE_THIS_WITH_ID!' MOUNT_DIRECTORY: '/efs'
Ejemplo de extracto de Dockerrun.aws.json :
"Volumes": [ { "HostDirectory": "/efs/app", "ContainerDirectory": "/usr/src/app", }