8 Conseils pour faire votre conteneur docker NodeJs de production

Entre le développement et la production, on oublie trop souvent qu’il y a un gap à franchir. L’application sur laquelle on développe, même si l’on développe directement dans un conteneur docker ne peut être livrée telle quelle en production. Voici donc quelques conseils pour réussir un conteneur « production ready » en NodeJS.

Continue reading « 8 Conseils pour faire votre conteneur docker NodeJs de production »

APIDays 2018 – Présentations et ressources

Cette semaine, j’ai eu le plaisir d’assister aux APIDays 2018 qui se tenaient à Paris les 30 et 31 janvier. Beaucoup de choses ont été dites et partager et c’est très difficile d’en faire un compte rendu. Des sujets aussi varié que l’ouverture des data, la sécurité, l’impact de la RGPD (et comment s’y conformer), les microservices (et bien d’autres) ont été abordé.

Continue reading « APIDays 2018 – Présentations et ressources »

Variables d’environnements et Nginx avec Docker

Il existe une image docker Nginx officielle pour docker que l’on peut trouver sur le docker hub. C’est cool. Mais l’un des besoins courant avec docker est de pouvoir adapter légèrement la configuration de l’image par rapport à son environnement d’exécution (comment dialoguer avec les conteneurs voisins par exemple) en injectant des variables d’environnement.

Mais voilà, pour des raisons de performances (et aussi un peu de sécurité), les variables d’environnement ne sont pas accessible dans les fichiers de configurations nginx.

Continue reading « Variables d’environnements et Nginx avec Docker »

Pré-configurer Grafana avec Docker-Compose

Grafana est un excellent outil permettant de créer facilement des dashboards de monitoring en se branchant sur différentes sources de données. Ce projet est open-source et disponible sous la forme d’un conteneur docker, ce qui lui permet d’être intégré directement dans d’autres projets de plus grande envergure. C’est par exemple ce que j’ai fait avec Omeglast.

Pour facilité son inclusion dans un projet, il est nécessaire d’avoir une solution pour initialiser Grafana directement avec une configuration propre à notre projet (accès aux sources de données, dashboards initialisés, etc.)

Heureusement, Grafana avec quelques outils supplémentaires dispose de tous les éléments nécessaires.

Continue reading « Pré-configurer Grafana avec Docker-Compose »

Portainer, Nginx et docker-compose

Dans un précédent article, je vous avais présenté une installation rapide de Portainer en passant uniquement par docker. Cette installation est idéale en développement, mais lorsque l’on a besoin d’aller un peu plus loin (sur un serveur de test par exemple) on peut vouloir rajouter un minimum de sécurité : restreindre à certaines IP, restreindre à un domaine particulier, etc.

C’est que je vais vous montrer ici en ajoutant un serveur NGinx en front avec docker-compose.

Continue reading « Portainer, Nginx et docker-compose »

Installation rapide de Portainer

Quand on travaille avec docker sur des environnements de dev ou de test, on a rapidement besoin d’un outil pour pouvoir gérer / trier toutes ces images et ces containers qui finissent par trainer dans tous les sens.

Il existe de nombreux outils pour le faire, pour ma part, j’utilise Portainer (Je vous laisse aller faire un tour sur le site et regarder la démo)

Continue reading « Installation rapide de Portainer »

Tagger une image docker avec le nom de la branche git

Un petit tips en passant, il est souvent bien utile de pouvoir utiliser le nom de la branche git en cours pour builder une image docker.

Personnellement, je l’utilise dans deux cas :

  • Lorsque j’ai plusieurs développement en cours (et j’ai donc besoin d’une image correspondant à chaque branches)
  • Lorsque j’ai différentes branches correspondant à différentes version de l’image (version différente de PHP ou de NodeJS par exemple)

Du coup, la première étape est de récupérer le nom de la branche en cours :

git rev-parse --abbrev-ref HEAD

Et il ne reste plus qu’à le stocker le résultat dans une variable.

Autre petit truc, si la branche est master, dans ce cas je rajoute un tag latest à mon image.

Et le tout dans un Makefile :

.PHONY build

IMAGE:=jeckel/image
TAG:=$(shell git rev-parse --abbrev-ref HEAD)

build:
	@docker build -t ${IMAGE}:${TAG} .
	@if [ ${TAG} = "master" ]; then \
		docker tag ${IMAGE}:${TAG} ${IMAGE}:latest; \
	fi

Il ne reste plus qu’à builder l’image :

make build

Note : si vous voulez utiliser plutôt le hash du dernier commit, il suffit d’utiliser la commande suivante :

git rev-parse HEAD