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 v2
est 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.
Rubriques
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 desmountPoints
de la sectioncontainerDefinitions
. - 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
oumongo
). -
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 valeurPHP
:"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
oumemoryReservation
(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
oumemoryReservation
(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/
. Ces volumes sont nomméscontainername
awseb-logs-
et doivent être montés à l'emplacement où les journaux sont écrits dans le système de fichiers du conteneur.containername
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"
}
]
}
]
}