Etendre son conteneur Docker avec un volume dans Azure File Storage

Après la mise en production de ce blog, je n’avais qu’une seule envie, c’était de pouvoir changer de thème et jouer un peu avec Ghost! 
 Dans la documentation de Ghost, il est indiqué qu’il faut simplement déposer le dossier de thème dans un chemin spécifique de l’application (/path/to/ghost/content/themes/).

Avec ça, il ne me restait plus qu’à trouver le moyen le plus simple pour moi de manipuler ces thèmes avec mes containers. Cela, sans que je sois obligé d’ouvrir une session ssh vers mon host Docker à chaque fois que j’ai envie de rajouter un thème…

J’ai donc décidé de stocker mes thèmes dans un partage de fichiers Azure avec Azure File Storage
 Ça me donnait l’avantage de pouvoir accéder facilement à mes dossiers de thèmes depuis le portail Azure, ou encore de copier mes fichiers en utilisant AzCopy. Je pouvais également distribuer ce partage entre plusieurs instances de conteneurs du blog (blog01, blog02…).

J’avais une solution, et voici le plan que je me suis monté:

Installer le driver docker pour Azure File

Actuellement le blog est constitué de 2 containers:

  • 1 conteneur applicatif
  • 1 conteneur de données

On veut avoir un 3ème conteneur avec un volume de données pointant vers un partage Azure où seront stockés nos thèmes.

Avec Docker, il est possible de créer des volumes en indiquant un driver spécifique afin de stocker nos données dans un système de stockage externe. 
 Il existe des drivers pour plusieurs systèmes comme GlusterFS, ou encore celui de Azure fait par l’excellent Ahmet Alp Balkan que je vous invite à suivre!

Avant de passer à l’installation du driver, il faut qu’on s’assure d’avoir un compte de stockage Azure et les credentials d’accès car on en aura besoin lors de l’installation.

N.B: Le compte de stockage doit se trouver dans la même région que la VM Azure sinon vous risquez d’avoir une erreur au moment du mount.cifs

Passons maintenant à l’installation du driver pour Azure File (Documentation complète):

On se connecte à notre Host Docker et on vérifie la version d’Ubuntu avec la commande lsb_release -a.

Puis, on suit le bon guide d’installation en fonction de notre version:

Peu importe l’installation suivie, il faut éditer le fichier /etc/default/azurefile-dockervolumedriver pour y inscrire nos informations de connexion au compte de stockage Azure.

A la fin de l’installation, si tout s’est bien passé on peut vérifier le statut du service: 
 systemctl status azurefile-dockervolumedriver

Créer le volume de données partagées dans Azure

Notre driver Azure File est bien configuré, on peut créer un volume Docker avec la commande docker volume create et l’option -d azurefile pour indiquer que notre volume sera géré par le service azurefile-dockervolumedriver.

docker volume create -d azurefile --name "blog-themes" -o share=blog-themes

On laisse la magie — cifs / smb — opérer et on peut voir apparaitre notre partage dans Azure ;)

Créer le conteneur de données

Maintenant que le partage est monté et le volume créé, on construit un conteneur de données -comme un placeholder- qui va exploiter notre volume de données et le mapper au chemin dans lequel Ghost attend les thèmes -v blog-themes:/var/lib/ghost/themes

docker run -d -t --name blog-themes -v blog-themes:/var/lib/ghost/themes alpine ./bin/sh`

On peut remonter facilement un “nouveau” blog à partir des 2 conteneurs de données existants avec l’option — volumes-from.

docker run --name blog --volumes-from blog-content --volumes-from blog-themes -p 80:2368 ghost`

La beauté avec cette architecture, c’est que Ghost peut récupérer les fichiers existants depuis blog-content donc on va simplement repartir des données de notre site avec en plus un partage dans Azure qui pointe vers le dossier themes!

Le thème par défaut apparaît déjà dans Azure File

Ajouter le thème au partage de fichiers

Nous en sommes à la partie où on se récompense, On se rend sur http://marketplace.ghost.org/themes/free/ pour sélectionner un thème :)

Dans notre cas, on a choisi Odin et l’installation est plutôt simple une fois le thème téléchargé sur github.

On pourrait télécharger le dossier de thème depuis l’interface du portail, mais lorsqu’il faut uploader des dossiers, l’utilitaire de Microsoft, AzCopy est bien pratique. Il va nous servir à copier directement les fichiers vers notre compte de stockage en indiquant nos informations d’accès. 
 Cet utilitaire se trouve à l’adresse \Program Files\Microsoft SDKs\Azure\AzCopy.

.\AzCopy.exe /Source:'C:\path\to\odin\' /Dest:https://<storage-account>.file.core.windows.net/blog-themes/odin /DestKey:<AccountKey> /s

On relance le conteneur docker restart container, et notre thème est prêt à l’emploi !! :)

A bientôt pour probablement un article sur un cluster Swarm dans Azure.. :o

P.S:En attendant que j’installe un module de discussions sur les posts, n’hésitez pas à me faire part de vos retours ou questions sur https://twitter.com/renaudin_yann :)


Originally published at yannrenaudin.com on April 13, 2016.

Show your support

Clapping shows how much you appreciated Renaudin Yann’s story.