Pour mon image Docker de l’api:Console, j’utilisais l’image officielle Node.js de Docker qui elle-même se base sur une Debian Jessie. L’image finale avait une taille virtuelle de 301 Mo.

Solomon Hykes, fondateur et CTO de Docker, a récemment annoncé que l’image de base pourrait être1 Alpine Linux qui fait moins de 5 Mo ! Cette distribution est réputée légère et plus sécurisée. Alors pourquoi ne pas migrer sur cette image ? Pour celà, il faut simplement remplacer l’entête du Dockerfile d’origine :

FROM node

Par celle-ci :

FROM alpine

RUN apk add --update nodejs \
		&& rm -rf /var/cache/apk/*

Rien de plus simple, non ?

Après quelques optimisations sur l’utilisation de Git 2, l’image de l’api:Console est passée de 301 Mo à 69 Mo.

Si vous souhaitez optimiser la taille de vos images Node.js, il ne reste plus mettre à jour vos Dockerfile en attendant une version officielle de Node.js basée sur Alpine. A noter que cette astuce est valable pour n’importe quelle image qui se base sur Ubuntu ou Debian.

PS: Pour ceux que ça intéresse, vous pouvez utilisez le tag raml-1.0 pour tester la version expérimentale supportant RAML 1.0 avec la commande

$ docker run -p 9000:9000 -d slecache/api-console:raml-1.0
  1. Post sur Hacker News
  2. Le code source est disponible sur le dépôt GitHub.