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.
Préparation de votre image Docker pour le déploiement sur Elastic Beanstalk
Cette section explique comment préparer votre image Docker en vue de son déploiement sur Elastic Beanstalk avec Docker en cours d'exécution ou une branche 023 de la AL2 plateforme. AL2 Les fichiers de configuration dont vous aurez besoin varient selon que vos images sont locales, distantes et si vous utilisez Docker Compose.
Note
Pour un exemple de procédure qui lance un environnement Docker, consultez la QuickStart pour Docker rubrique.
Rubriques
Gérer vos images avec Docker Compose dans Elastic Beanstalk
Vous pouvez choisir d'utiliser Docker Compose pour gérer différents services dans un seul YAML fichier. Pour en savoir plus sur Docker Compose, voir Pourquoi utiliser Compose
-
Créez un
docker-compose.yml
. Ce fichier est obligatoire si vous utilisez Docker Compose pour gérer votre application avec Elastic Beanstalk. Si tous vos déploiements proviennent d'images stockées dans des référentiels publics, aucun autre fichier de configuration n'est requis. Si les images source de votre déploiement se trouvent dans un référentiel privé, vous devrez effectuer une configuration supplémentaire. Pour plus d'informations, consultez la section Utilisation d'images provenant d'un dépôt privé. Pour de plus amples informations sur le fichierdocker-compose.yml
, veuillez consulter Compose file referencesur le site web Docker. -
Dockerfile
C'est facultatif. Créez-en une si vous avez besoin d'Elastic Beanstalk pour créer et exécuter une image personnalisée locale. Pour de plus amples informations sur le fichierDockerfile
, veuillez consulter Dockerfile referencesur le site web Docker. -
Il se peut que vous deviez créer un
.zip
fichier. Si vous utilisez uniquement unDockerfile
fichier pour déployer votre application, il n'est pas nécessaire d'en créer un. Si vous utilisez des fichiers de configuration supplémentaires, le fichier .zip doit inclure ledocker-compose.yml
fichierDockerfile
, vos fichiers d'application et toutes les dépendances des fichiers d'application. LesDockerfile
etdocker-compose.yml
doivent se trouver à la racine, ou au niveau supérieur, de l'archive .zip. Si vous utilisez l'EB CLI pour déployer votre application, il crée un fichier .zip pour vous.
Pour en savoir plus sur Docker Compose et savoir comment l'installer, veuillez consulter les sites Docker Overview of Docker Compose
Gérer des images sans Docker Compose dans Elastic Beanstalk
Si vous n'utilisez pas Docker Compose pour gérer vos images Docker, vous devez configurer un Dockerrun.aws.json
fichierDockerfile
, ou les deux.
-
Créez une image
Dockerfile
personnalisée pour qu'Elastic Beanstalk crée et exécute une image personnalisée localement. -
Créez un fichier
Dockerrun.aws.json v1
afin de déployer une image Docker à partir d'un référentiel hébergé dans Elastic Beanstalk. -
Il se peut que vous deviez créer un
.zip
fichier. Si vous n'utilisez que l'un des deux fichiers, leDockerfile
ou leDockerrun.aws.json
, vous n'avez pas besoin de créer un fichier .zip. Si vous utilisez les deux fichiers, vous avez besoin d'un fichier .zip. Le fichier .zip doit inclure à la fois leDockerfile
et leDockerrun.aws.json
, ainsi que le fichier contenant vos fichiers d'application, ainsi que toutes les dépendances des fichiers d'application. Si vous utilisez l'EB CLI pour déployer votre application, il crée un.zip
fichier pour vous.
Dockerrun.aws.json
fichier de configuration v1
Un fichier Dockerrun.aws.json
décrit comment déployer une image Docker distante en tant qu'application Elastic Beanstalk. Ce JSON fichier est spécifique à Elastic Beanstalk. Si votre application s'exécute sur une image qui est disponible dans un référentiel hébergé, vous pouvez spécifier l'image dans un fichier Dockerrun.aws.json v1
et omettre le Dockerfile
.
Versions Dockerrun.aws.json
Le paramètre AWSEBDockerrunVersion
indique la version du fichier Dockerrun.aws.json
.
-
Les plateformes Docker AL2 et AL2 023 utilisent les versions suivantes du fichier.
Dockerrun.aws.json v3
— environnements utilisant Docker Compose.
Dockerrun.aws.json v1
— environnements qui n'utilisent pas Docker Compose.
-
ECSexécuté sur Amazon Linux 2 et ECSexécuté sur AL2 023 utilise le
Dockerrun.aws.json v2
fichier. La plate-forme retirée ECS-The Multicontainer Docker Amazon Linux AMI (AL1) utilisait également cette même version.
Les clés et valeurs valides pour le fichier Dockerrun.aws.json v1
incluent les opérations suivantes.
- AWSEBDockerrunVersion
-
(Obligatoire) Spécifiez le numéro de version
1
si vous n'utilisez pas Docker Compose pour gérer votre image. - Authentification
-
(Obligatoire uniquement pour les référentiels privés) Indique l'objet Amazon S3 qui stocke le fichier
.dockercfg
.Voir Utilisation d'images provenant d'un dépôt privé dans Elastic Beanstalk la section Utilisation d'images provenant d'un dépôt privé plus loin dans ce chapitre.
- Image
-
Spécifie l'image de base Docker sur un référentiel Docker existant, à partir de laquelle vous créez un conteneur Docker. Spécifiez la valeur de la clé Name au format
<organization>/<image name>
pour les images sur Docker Hub, ou<site>/<organization name>/<image name>
pour les autres sites.Lorsque vous spécifiez une image dans le fichier
Dockerrun.aws.json
, chaque instance de votre environnement Elastic Beanstalk exécutedocker pull
pour exécuter l'image. Vous pouvez également inclure la clé Update. La valeur par défaut esttrue
et demande à Elastic Beanstalk de vérifier le référentiel, d'extraire les mises à jour de l'image et de remplacer toutes les images mises en cache.Lorsque vous utilisez un fichier
Dockerfile
, ne spécifiez pas la clé Image dans le fichierDockerrun.aws.json
. Elastic Beanstalk crée et utilise toujours l'image décrite dans le fichierDockerfile
, lorsqu'il existe. - Ports
-
(Obligatoire si vous spécifiez la clé Image) Répertorie les ports à exposer sur le conteneur Docker. Elastic Beanstalk ContainerPortutilise cette valeur pour connecter le conteneur Docker au proxy inverse exécuté sur l'hôte.
Vous pouvez spécifier plusieurs ports de conteneur, mais Elastic Beanstalk utilise uniquement le premier port. Il utilise ce port pour connecter votre conteneur au proxy inverse de l'hôte et acheminer les demandes depuis le réseau Internet public. Si vous utilisez un
Dockerfile
, la première ContainerPortvaleur doit correspondre à la première entréeDockerfile
de la EXPOSEliste.Vous pouvez éventuellement spécifier une liste de ports dans HostPort. HostPortles entrées spécifient les ports hôtes auxquels ContainerPortles valeurs sont mappées. Si vous ne spécifiez aucune HostPortvaleur, la valeur par défaut est la même ContainerPort.
{ "Image": { "Name": "
image-name
" }, "Ports": [ { "ContainerPort":8080
, "HostPort":8000
} ] } - Volumes
-
Mappez les volumes d'une EC2 instance à votre conteneur Docker. Spécifiez un ou plusieurs groupes de volumes à mapper.
{ "Volumes": [ { "HostDirectory": "
/path/inside/host
", "ContainerDirectory": "/path/inside/container
" } ] ... - Journalisation
-
Spécifiez le répertoire du conteneur dans lequel votre application écrit les journaux. Elastic Beanstalk télécharge tous les journaux de ce répertoire sur Amazon S3 lorsque vous demandez des journaux de processus ou de groupe. Si vous effectuez une rotation des journaux dans un dossier nommé
rotated
au sein de ce répertoire, vous pouvez également configurer Elastic Beanstalk afin de charger les journaux concernés dans Amazon S3 pour un stockage permanent. Pour plus d'informations, consultez Afficher les journaux des EC2 instances Amazon dans votre environnement Elastic Beanstalk. - Commande
-
Spécifiez une commande à exécuter dans le conteneur. Si vous spécifiez un point d'entrée, la valeur Command (Commande) est ajoutée comme argument dans Entrypoint (Point d'entrée). Pour plus d'informations, consultez CMD
la documentation Docker. - Entrypoint
-
Spécifiez une commande par défaut à exécuter lorsque le conteneur démarre. Pour plus d'informations, consultez ENTRYPOINT
la documentation Docker.
L'extrait suivant est un exemple illustrant la syntaxe du fichier Dockerrun.aws.json
pour un conteneur unique.
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "janedoe/image",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "1234"
}
],
"Volumes": [
{
"HostDirectory": "/var/app/mydb",
"ContainerDirectory": "/etc/mysql"
}
],
"Logging": "/var/log/nginx",
"Entrypoint": "/app/bin/myapp",
"Command": "--argument"
}>
Vous pouvez fournir à Elastic Beanstalk le fichier Dockerrun.aws.json
uniquement, ou une archive .zip
contenant les fichiers Dockerrun.aws.json
et Dockerfile
. Si vous fournissez les deux fichiers, le Dockerfile
décrit l'image Docker et le fichier Dockerrun.aws.json
fournit des informations supplémentaires pour le déploiement, comme indiqué ultérieurement dans cette section.
Note
Les deux fichiers doivent être à la racine, ou au niveau supérieur, de l'archive .zip
. Ne créez pas l'archive à partir d'un répertoire contenant les fichiers. Au lieu de cela, parcourez ce répertoire et créez l'archive dans le répertoire.
Si vous fournissez les deux fichiers, ne spécifiez aucune image dans le fichier Dockerrun.aws.json
. Elastic Beanstalk crée et utilise l'image décrite dans le fichier Dockerfile
et ignore celle spécifiée dans le fichier Dockerrun.aws.json
.
Création d'images personnalisées avec un Dockerfile
Vous devez créer un Dockerfile
si vous ne disposez d'aucune image existante hébergée dans un référentiel.
L'extrait suivant représente un exemple de Dockerfile
. Si vous suivez les instructions de la page QuickStart pour Docker, vous pouvez charger ce fichier Dockerfile
comme indiqué. Elastic Beanstalk exécute le jeu 2048 lorsque vous utilisez ce fichier Dockerfile
.
Pour plus d'informations sur les instructions que vous pouvez inclure dans le Dockerfile
, consultez la référence sur Dockerfile
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y nginx zip curl
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip
EXPOSE 80
CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
Note
Vous pouvez exécuter des versions à plusieurs étapes à partir d'un seul Dockerfile pour produire des images de plus petite taille avec une réduction significative de la complexité. Pour plus d'informations, consultez Utiliser des versions à plusieurs étapes