Configuration du fichier DockerRun.aws.json v2 - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration du fichier DockerRun.aws.json v2

Dockerrun.aws.json v2est un fichier de configuration Elastic Beanstalk qui décrit comment déployer un ensemble de conteneurs Docker hébergés dans un ECS cluster dans un environnement Elastic Beanstalk. La plateforme Elastic Beanstalk ECS crée une définition de tâche, qui inclut une définition de conteneur. ECS Ces définitions sont décrites dans le fichier de configuration Dockerrun.aws.json.

La définition du conteneur dans le Dockerrun.aws.json fichier décrit les conteneurs à déployer sur chaque EC2 instance Amazon du ECS cluster. Dans ce cas, une EC2 instance Amazon est également appelée instance de conteneur hôte, car elle héberge les conteneurs Docker. Le fichier de configuration décrit également les volumes de données à créer sur l'instance de conteneur hôte pour le montage des conteneurs Docker. Pour plus d'informations et un schéma des composants d'un environnement Docker ECS géré sur Elastic Beanstalk, ECSprésentation de la plateforme Docker gérée reportez-vous à la section précédente de ce chapitre.

Un fichier Dockerrun.aws.json peut être utilisé de façon autonome ou compressé avec un code source supplémentaire dans une archive unique. Le code source archivé avec un Dockerrun.aws.json est déployé sur les instances de EC2 conteneur Amazon et accessible dans le /var/app/current/ répertoire.

Dockerrun.aws.json v2

Le fichier Dockerrun.aws.json comprend les sections suivantes :

AWSEBDockerrunVersion

Spécifie le numéro de version comme valeur 2 pour les environnements Docker ECS gérés.

volumes

Crée des volumes à partir de dossiers de l'instance de EC2 conteneur Amazon ou de votre bundle source (déployé vers/var/app/current). Montez ces volumes sur les chemins de vos conteneurs Docker à l'aide des mountPoints de la section containerDefinitions.

containerDefinitions

Un tableau de définitions de conteneurs.

authentification (facultatif)

Dans Amazon S3, emplacement d'un fichier .dockercfg contenant les données d'authentification pour un référentiel privé.

Les sections containerDefinitionset volumes de Dockerrun.aws.json utilisent le même format que les sections correspondantes d'un fichier de définition de ECS tâche Amazon. Pour plus d'informations sur le format de définition des tâches et une liste complète des paramètres de définition des tâches, consultez les définitions de ECS tâches Amazon dans le manuel Amazon Elastic Container Service Developer Guide.

Format de volume

Le paramètre volume crée des volumes à partir des dossiers de l'instance de EC2 conteneur Amazon ou de votre bundle source (déployé vers/var/app/current).

Les volumes sont spécifiés dans le format suivant :

"volumes": [ { "name": "volumename", "host": { "sourcePath": "/path/on/host/instance" } } ],

Montez ces volumes sur les chemins de vos conteneurs Docker à l'aide des mountPoints de la définition de conteneur.

Elastic Beanstalk configure des volumes supplémentaires pour les journaux (un pour chaque conteneur). Ils doivent être montés par vos conteneurs Docker afin d'écrire les journaux dans l'instance de l'hôte.

Pour plus de détails, consultez le champ mountPoints dans la section Format de définition de conteneur qui suit.

Format des définitions de conteneur

Les exemples suivants présentent un sous-ensemble de paramètres couramment utilisés dans cette containerDefinitionssection. D'autres paramètres facultatifs sont disponibles.

La plateforme Beanstalk crée une définition de ECS tâche, qui inclut une ECS définition de conteneur. Beanstalk prend en charge un sous-ensemble de paramètres pour la définition du conteneur. ECS Pour plus d'informations, consultez Définitions de conteneurs dans le Guide du développeur Amazon Elastic Container Service.

Un fichier Dockerrun.aws.json contient un tableau d'un ou plusieurs objets de définition de conteneur comportant les champs suivants :

nom

Nom du conteneur. Consultez Paramètres de définition de conteneur standards pour obtenir plus d'informations sur la longueur maximale et les caractères autorisés.

image

Nom d'une image Docker dans un référentiel Docker en ligne à partir de laquelle vous créez un conteneur Docker. Notez ces conventions :

  • Les images dans les référentiels officiels sur Docker Hub utilisent un nom unique (par exemple, ubuntu ou mongo).

  • Les images dans les autres référentiels sur Docker Hub sont qualifiées par un nom d'organisation (par exemple, amazon/amazon-ecs-agent.

  • Les images dans les autres référentiels en ligne sont qualifiées par un nom de domaine (par exemple, quay.io/assemblyline/ubuntu).

environment

Tableau des variables d'environnement à transmettre au conteneur.

Par exemple, l'entrée suivante définit une variable d'environnement avec le nom Container et la valeur PHP :

"environment": [ { "name": "Container", "value": "PHP" } ],
essential

True si la tâche doit s'arrêter en cas d'échec du conteneur. Les conteneurs non essentiels peuvent s'arrêter ou se bloquer sans conséquences sur les autres conteneurs de l'instance.

memory

Quantité de mémoire sur l'instance de conteneur à réserver pour le conteneur. Spécifiez un entier non nul pour l'un des paramètres memory ou memoryReservation (ou les deux) dans les définitions de conteneur.

memoryReservation

La limite flexible (en MiB) de mémoire à réserver pour le conteneur. Spécifiez un entier non nul pour l'un des paramètres memory ou memoryReservation (ou les deux) dans les définitions de conteneur.

mountPoints

Volumes provenant de l'instance de EC2 conteneur Amazon à monter et emplacement sur le système de fichiers de conteneur Docker où ils doivent être montés. Lorsque vous montez des volumes qui contiennent des contenus applicatifs, votre conteneur peut lire les données que vous chargez dans votre bundle source. Lorsque vous montez des volumes de journal pour écrire des données de journaux, Elastic Beanstalk peut collecter les données de journaux à partir de ces volumes.

Elastic Beanstalk crée les volumes de fichiers journaux sur l'instance de conteneur (un pour chaque conteneur Docker), à l'emplacement /var/log/containers/containername. Ces volumes sont nommés awseb-logs-containername et doivent être montés à l'emplacement où les journaux sont écrits dans le système de fichiers du conteneur.

Par exemple, le point de montage suivant mappe l'emplacement du journal nginx dans le conteneur sur le volume généré par Elastic Beanstalk pour le conteneur nginx-proxy.

{ "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" }
portMappings

Mappe les ports réseau du conteneur sur les ports de l'hôte.

links

Liste des conteneurs à lier les uns aux autres. Les conteneurs liés peuvent s'identifier entre eux et communiquer en toute sécurité.

volumesFrom

Montez tous les volumes à partir d'un autre conteneur. Par exemple, pour monter les volumes à partir d'un conteneur nommé web:

"volumesFrom": [ { "sourceContainer": "web" } ],

Format d'authentification : utilisation d'images à partir d'un référentiel privé

La section authentication contient les données d'authentification pour un référentiel privé. Cette entrée est facultative.

Ajoutez les informations relatives au compartiment Amazon S3 contenant le fichier d'authentification dans le paramètre authentication du fichier Dockerrun.aws.json. Assurez-vous que le paramètre authentication contient une clé et un compartiment Amazon S3 valides. Le compartiment Amazon S3 doit être hébergé dans la même région que l'environnement qui l'utilise. Elastic Beanstalk ne télécharge pas de fichiers à partir de compartiments Amazon S3 hébergés dans d'autres régions.

Utilise le format suivant :

"authentication": { "bucket": "amzn-s3-demo-bucket", "key": "mydockercfg" },

Pour plus d'informations sur la génération et le chargement du fichier d'authentification, consultez Utilisation d'images provenant d'un dépôt privé dans Elastic Beanstalk.

Exemple de Dockerrun.aws.json v2

L'extrait suivant est un exemple illustrant la syntaxe du fichier Dockerrun.aws.json pour une instance avec deux conteneurs.

{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "php-app", "host": { "sourcePath": "/var/app/current/php-app" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/proxy/conf.d" } } ], "containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "environment": [ { "name": "Container", "value": "PHP" } ], "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }, { "name": "nginx-proxy", "image": "nginx", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "php-app" ], "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d", "readOnly": true }, { "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" } ] } ] }