/ Linux

Docker et AWS : le mariage parfait ? <3

L’un des atouts du conteneur est de donner davantage d’autonomie au développeur.

Ce dernier doit pouvoir travailler sur son application sans se soucier de la configuration de la machine sur laquelle il travaille : il doit pouvoir développer sur son poste de travail et pousser son conteneur sur un serveur de test, puis pré-production, et jusqu’en production sans rencontrer de difficultés.

Le développeur doit aussi pouvoir modifier son docker et en gérer les versions sans se préoccuper des conséquences pour la production.

En résumé, un des bénéfices du conteneur c’est qu’il doit pouvoir se déployer n’importe où en toute sécurité.

docker-en-production

PETIT LEXIQUE DE DOCKER

pexels-photo-247791

DOCKER IMAGE

C’est l’élément de base d’un docker, on utilise une Docker image à deux stades :

Au départ, on va chercher une image de base standard pour l’applicatif choisi (Nginx, Php, Redis), le plus souvent dans un repository public, o n complète ensuite cette image standard des éléments de configuration de votre application, vous pouvez ensuite enregistrer la nouvelle image dans un repository public, ou privé,

DOCKER FILE

C’est le fichier texte qui décrit la configuration de votre docker, en général , on part d’une image standard et on ajoute les éléments propres à la configuration de l’application que l’on veut déployer ; une fois le Dockerfile finalisé, on « build » le conteneur,

DOCKER COMPOSE

Le docker compose est un fichier de configuration de l’ensemble des Dockers que vous souhaitez déployer pour votre application, il sert à les déployer et à gérer les liens entre les conteneurs ainsi que les volumes de data, Docker Compose est incompatible avec un orchestrateur ou vice et versa, il faut choisir entre l’un ou l’autre mode de gestion des conteneurs

ORCHESTRATEUR DE CONTENEURS

On l’expliquera plus en détail plus bas, mais l’orchestrateur est un peu au conteneur ce que vSphere/vCenter est à VMware pour des VMs, c’est le logiciel de gestion de l’ensemble des conteneurs sur un pool de ressources serveurs, avec davantage de fonctionnalités que vSphere/vCenter. C’est en quelque sorte un PaaS pour les conteneurs.

schema-archi-conteneur-Docker

Gestion du cycle de vie

Pour démarrer l’ensemble de la pile applicative ainsi déclarée, il suffit d’un

docker-compose up

ou

docker-compose start

pour le même résultat mais en arrière plan.

Vous êtes sûrs que je vous donne la commande pour arrêter l’application ? j’ai envie de dire stop à la facilité !

Mettre à jour tout ce petit monde est d’une simplicité redoutable et c’est certainement un des gros avantages de Docker.

docker-compose pull
docker-compose build
docker-compose up -d

Tout est mis à jour sans interruption de services, la classe !

Enfin, le jour ou vous en aurez marre de votre Wordpress, un simple

docker-compose rm

supprimera les conteneurs et avec l’option -v associée, supprimera les volumes associés.

Il est bien sûr toujours possible d’améliorer ce setup. L’intérêt dans le contexte docker est qu’on ne repart pas à zéro comme trop souvent. Ce qui est décrit permet de capitaliser pour la suite.

Par exemple, comme indiqué au niveau bonnes pratiques dans la documentation de Docker, il serait possible de créer un conteneur uniquement destiné au stockage des données Wordpress et qui seraient monté avec l’instruction volumes_from depuis les services en ayant besoin soit wordpress et nginx.

Débuter sur AWS

Avec les offres gratuites d'Amazon Cloud, il est tout à fait possible de démarrer quelques instances de test pour démarrer.

Capture-d-e-cran-2018-02-14-a--15.53.54

Capture-d-e-cran-2018-02-14-a--19.22.35

Hugo, pour un site statique lèger et rapide

sudo apt-get update
sudo apt-get -y upgrade

puis :

wget https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz

sudo tar -xvf go1.9.2.linux-amd64.tar.gz

$ sudo mv go /usr/local

export GOROOT=/usr/local/go

export GOPATH=$HOME/Projects/Proj1

export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

go version

go version go1.9.2 linux/amd64

installer Caddy :

go get github.com/mholt/caddy/caddy

go get github.com/caddyserver/builds

Now cd to $GOPATH/src/github.com/mholt/caddy/caddy and run go run build.go

Hugo with Nanobox -

  1. en local

Capture-d-e-cran-2018-02-17-a--16.48.09

Capture-d-e-cran-2018-02-17-a--16.46.21

  1. déploiement sur AWS