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.
Exécution d'un environnement Docker localement avec l'interface de ligne de commande (CLI) EB
Vous pouvez utiliser l'interface de ligne de commande Elastic Beanstalk (CLI) (EB) pour exécuter des conteneurs Docker configurés dans votre application AWS Elastic Beanstalk localement. L'interface de ligne de commande (CLI) EB utilise le fichier de configuration Docker (Dockerfile
ou Dockerrun.aws.json
) et le code source dans votre répertoire de projet pour exécuter votre application localement dans Docker.
Rubriques
Conditions requises pour exécuter des applications Docker localement
-
Linux OS ou Mac OS X
-
Interface de ligne de commande (CLI) EB version 3.3 ou plus
Exécutez eb init dans votre répertoire de projet pour initialiser un référentiel de l'interface de ligne de commande (CLI) EB. Si vous n'avez jamais utilisé l'interface de ligne de commande (CLI) EB, veuillez consulter Gestion des environnements Elastic Beanstalk avec l'interface de ligne de commande EB.
-
Docker version 1.6 ou ultérieure
Ajoutez vous-même au groupe
docker
, déconnectez-vous et puis reconnectez-vous afin de garantir que vous pouvez exécuter des commandes Docker sanssudo
:$
sudo usermod -a -G docker $USER
Exécutez
docker ps
pour vérifier que le démon Docker est opérationnel :$
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -
Une application Docker
Si vous n'avez pas d'application Docker dans un dossier de projet sur votre ordinateur local, consultez Déploiement d'applications Elastic Beanstalk à partir de conteneurs Docker pour une introduction à l'utilisation de Docker avec AWS Elastic Beanstalk.
-
Profil de docker (facultatif)
Si votre application utilise des images Docker dans un référentiel privé, exécutez
docker login
et suivez les invites pour créer un profil d'authentification. -
w3m (facultatif)
W3m est un navigateur web que vous pouvez utiliser pour afficher votre application web en cours d'exécution au sein d'un terminal de ligne de commande avec eb local run. Si vous utilisez la ligne de commande dans un environnement de bureau, vous n'avez pas besoin de w3m.
Les conteneurs Docker s'exécutent localement sans émuler les ressources AWS qui sont allouées lorsque vous déployez une application Elastic Beanstalk, y compris des groupes de sécurité et des données ou des niveaux de travail.
Vous pouvez configurer vos conteneurs locaux pour vous connecter à une base de données en passant la chaîne de connexion nécessaires ou d'autres variables avec l'option envvars
, mais vous devez vous assurer que toutes les ressources dans AWS sont accessibles à partir de votre ordinateur local en ouvrant les ports appropriés dans leurs groupes de sécurité affectés ou en attachant une passerelle par défaut ou une adresse IP Elastic.
Préparation d'une application Docker en vue de son utilisation avec l'interface de ligne de commande (CLI) EB
Préparez vos données source et votre fichier de configuration Docker comme si vous étiez en train de les déployer sur Elastic Beanstalk. Cette rubrique utilise l'exemple de proxy PHP et nginx du Tutoriel Docker multiconteneurs, qui figure également dans ce chapitre. Vous pouvez utiliser les mêmes commandes avec n'importe quelle application Docker, Docker multiconteneurs ou Docker préconfiguré.
Exécution d'une application Docker localement
Exécutez votre application Docker localement avec la commande eb local run à partir du répertoire de projet :
~/project$ eb local run
Creating elasticbeanstalk_phpapp_1...
Creating elasticbeanstalk_nginxproxy_1...
Attaching to elasticbeanstalk_phpapp_1, elasticbeanstalk_nginxproxy_1
phpapp_1 | [23-Apr-2015 23:24:25] NOTICE: fpm is running, pid 1
phpapp_1 | [23-Apr-2015 23:24:25] NOTICE: ready to handle connections
L'interface de ligne de commande (CLI) EB lit la configuration Docker et exécute les commandes Docker nécessaires pour exécuter votre application. La première fois que vous exécutez un projet localement, Docker télécharge des images à partir d'un référentiel distance et les stocke sur votre ordinateur local. Ce processus peut prendre plusieurs minutes.
Note
La commande eb local run prend deux paramètres facultatifs, port
et envvars
.
Pour remplacer le port par défaut pour une application Docker multi-conteneurs, utilisez l'option port
:
$ eb local run --port 8080
Cette commande indique l'interface de ligne de commande (CLI) EB pour utiliser le port 8080 sur l'hôte et le mapper avec le port exposé sur le conteneur. Si vous ne spécifiez pas un port, l'interface de ligne de commande (CLI) EB utilise le port du conteneur pour l'hôte. Cette option ne fonctionne qu'avec les applications utilisant la plateforme Docker.
Pour passer des variables d'environnement aux conteneurs d'application, utilisez l'option envvars
:
$ eb local run --envvars RDS_HOST=$RDS_HOST,RDS_DB=$RDS_DB,RDS_USER=$RDS_USER,RDS_PASS=$RDS_PASS
Utilisez des variables de l'environnement pour configurer une connexion de base de données, définissez des options de débogage ou transmettez des secrets en toute sécurité à votre application. Pour de plus amples informations sur les options prises en charge par les sous-commandes eb local, veuillez consulter eb local.
Une fois que les conteneurs sont opérationnels dans Docker, ils sont prêts à prendre des demandes des clients. Le processus eb local reste ouvert aussi longtemps que les conteneurs sont en cours d'exécution. Si vous avez besoin d'arrêter le processus et les conteneurs, appuyez sur Ctrl+C.
Ouvrez un second terminal pour exécuter des commandes supplémentaires pendant que le processus eb local est en cours d'exécution. Utilisez eb local status pour afficher l'état de votre application :
~/project$ eb local status
Platform: 64bit Amazon Linux 2014.09 v1.2.1 running Multi-container Docker 1.3.3 (Generic)
Container name: elasticbeanstalk_nginxproxy_1
Container ip: 127.0.0.1
Container running: True
Exposed host port(s): 80
Full local URL(s): 127.0.0.1:80
Container name: elasticbeanstalk_phpapp_1
Container ip: 127.0.0.1
Container running: True
Exposed host port(s): None
Full local URL(s): None
Vous pouvez utiliser docker ps
afin de voir l'état des conteneurs du point de vue de Docker :
~/project$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a8e71274fed nginx:latest "nginx -g 'daemon of 9 minutes ago Up 9 minutes 0.0.0.0:80->80/tcp, 443/tcp elasticbeanstalk_nginxproxy_1
82cbf620bdc1 php:fpm "php-fpm" 9 minutes ago Up 9 minutes 9000/tcp elasticbeanstalk_phpapp_1
Ensuite, affichez votre application en action avec eb local open:
~/project$ eb local open
Cette commande ouvre votre application dans le navigateur web par défaut. Si vous exécutez un terminal dans un environnement de bureau, il peut s'agir de Firefox, de Google Chrome ou de Safari. Si vous exécutez un terminal dans un environnement sans tête ou via une connexion SSH, un navigateur de ligne de commande, comme w3m, sera utilisé s'il est disponible.
Revenez au terminal exécutant le processus de demande pendant un moment et notez le résultat supplémentaire :
phpapp_1 | 172.17.0.36 - 21/Apr/2015:23:46:17 +0000 "GET /index.php" 200
Cela montre que l'application web dans le conteneur Docker a reçu une demande HTTP GET pour index.php qui a été renvoyée avec succès avec un état 200 (sans erreur).
Exécutez eb local logs pour voir où l'interface de ligne de commande (CLI) EB écrit les journaux.
~/project$ eb local logs
Elastic Beanstalk will write logs locally to /home/user/project/.elasticbeanstalk/logs/local.
Logs were most recently created 3 minutes ago and written to /home/user/project/.elasticbeanstalk/logs/local/150420_234011665784.
Nettoyage après l'exécution d'une application Docker localement
Lorsque vous avez terminé le test de votre application localement, vous pouvez arrêter les applications et supprimer les images téléchargées par Docker lorsque vous utilisez eb local run. La suppression des images est optionnelle. Vous pouvez souhaiter les conserver pour les utiliser ultérieurement.
Revenez au terminal exécutant le processus eb local et appuyez sur Ctrl+C pour arrêter l'application :
^C
Gracefully stopping... (press Ctrl+C again to force)
Stopping elasticbeanstalk_nginxproxy_1...
Stopping elasticbeanstalk_phpapp_1...
Aborting.
[1]+ Exit 5 eb local run
L'interface de ligne de commande (CLI) EB tente d'arrêter chaque conteneur en cours d'exécution normalement à l'aide de commandes Docker. Si vous avez besoin d'arrêter un processus immédiatement, appuyez à nouveau sur Ctrl+C.
Une fois que vous avez arrêté les applications, les conteneurs Docker doivent aussi arrêter de s'exécuter. Vérifiez cela avec docker ps
:
$ docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73d515d99d2a nginx:latest "nginx -g 'daemon of 21 minutes ago Exited (0) 11 minutes ago elasticbeanstalk_nginxproxy_1
7061c76220de php:fpm "php-fpm" 21 minutes ago Exited (0) 11 minutes ago elasticbeanstalk_phpapp_1
L'option all
montre des conteneurs arrêtés (si vous omettez cette option, le résultat sera vide). Dans l'exemple ci-dessus, Docker montre que les deux conteneurs ont terminé avec un état 0 (sans erreur).
Si vous avez terminé d'utiliser les commandes locales de l'interface de ligne de commande (CLI) EB et Docker, vous pouvez supprimer les images Docker de votre ordinateur local pour économiser de l'espace.
Pour supprimer les images Docker de votre ordinateur local
-
Affichez les images que vous avez téléchargées à l'aide de
docker images
:$
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE php fpm 68bc5150cffc 1 hour ago 414.1 MB nginx latest 637d3b2f5fb5 1 hour ago 93.44 MB -
Supprimez les deux conteneurs Docker avec
docker rm
:$
docker rm
73d515d99d2a 7061c76220de73d515d99d2a 7061c76220de
-
Supprimez les images avec
docker rmi
:$
docker rmi
Untagged: php:fpm Deleted: 68bc5150cffc0526c66b92265c3ed8f2ea50f3c71d266aa655b7a4d20c3587b0 Untagged: nginx:latest Deleted: 637d3b2f5fb5c4f70895b77a9e76751a6e7670f4ef27a159dad49235f4fe61e068bc5150cffc 637d3b2f5fb5