Après avoir proposé un support générique de Docker en juillet 2014, Amazon Web Services (AWS) a maintenant ajouté "Preconfigured Docker" comme nouvelle catégorie de son offre PaaS : AWS Elastic Beanstalk. Cette nouvelle catégorie s'appuie sur l'ajout récent de dépôts officiels pour les stacks de langages sur le Docker Hub Registry.
AWS mentionne la possibilité de "fournir rapidement les nouvelles versions des langages et des frameworks" comme principale motivation à cet ajout. Les utilisateurs qui sont intéressés par le fait de baser leurs plate-formes sur les stacks de langages officielles de Docker sont à présent en mesure "d'utiliser nos Dockerfile(s) comme point de départ". AWS souligne aussi le désir de parité développement/production pour "garder le développement aussi proche possible de la production" :
Les plate-formes "Preconfigured Docker" sont livrées sous forme de conteneurs Docker qui vous permettent de développer et de tester vos applications en local en utilisant le même conteneur que pour votre application déployée sur Elastic Beanstalk.
Comme d'habitude, des composants logiciels additionnels et des dépendances peuvent être ajoutés de manière déclarative, dans le Dockerfile à l'aide de l'instruction RUN. L'exemple ci-dessous montre "comment ajouter les dépendances PostgreSQL pour votre application lorsque vous utilisez la plate-forme Python 3.4" :
# Use the Python 3.4 Docker Image
FROM amazon/aws-eb-python:3.4.2-onbuild-3.5.1
# Expose port 8080
EXPOSE 8080
# Install PostgreSQL dependencies
RUN apt-get update && \
apt-get install -y postgresql libpq-dev && \
rm -rf /var/lib/apt/lists
Comme pour la plupart des autres environnements d'exécution supportés, les ressources Elastic Beanstalk provisionnées pour les conteneurs Docker pré-configurés peuvent être adaptées à l'aide de fichiers de configuration pour intégrer d'autres services AWS tels que Amazon DynamoDB ou Amazon Kinesis.
Un tutoriel de présentation illustre la simplicité de ce processus de développement. L'image produite peut alors être déployée comme n'importe quel conteneur Docker en utilisant la console Elastic Beanstalk ou à l'aide de l'interface en lignes de commandes qui a récement été ajoutée. Il est possible d'ajouter des instructions complémentaires de développement par l'intermédiaire du fichier de configuration spécifique à Elastic Beanstalk : Dockerrun.aws.json.
Les types de conteneurs pré-configurés Dockers supportés au lancement sont Python 3.4, Java 7/Glassfish 4.0 et Java 8/Glassfish 4.1. Bien qu'il soit probable que Elastic Beanstalk passe un jour à Docker comme environnement d'exécution par défaut, il est intéressant de noter que la stack Java 8/Tomcat 8 qui est pourtant sortie en même temps est toujours proposée comme type de conteneur dédié plutôt que comme un conteneur Docker pré-configuré.
L'évangéliste en chef de chez Amazon, Jeff Barr, a récemment fait allusion à une agréable surprise concernant l'utilisation de Docker sur AWS qui doit être révélée à l'occasion de AWS re:invent. Un support plus prononcé de Docker sur AWS, allant jusqu'à un service dédié similaire à Kubernetes, que Google a récemment annoncé, basé sur la plate-forme Google Container Engine (GKE), pourrait être révélé par Werner Vogels lors de sa keynote du 12 novembre (update : regardez l'annonce de Amazon EC2 Container Service (ECS) à 45:27 de la keynote).
La documentation de Elastic Beanstalk comporte un guide de développement qui inclut une section sur le déploiement d'un conteneur Docker pré-configuré ainsi que la documentation de l'API. Les images des conteneurs pré-configurés sont disponibles sur le Docker Hub et le code source est accessible sur GitHub. Du support est disponible par le forum Elastic Beanstalk.