métier

Quand le laptop déborde

Où comment ne pas se faire polluer avec les stacks de développement des différents projets en développement Publié par Éric Le Merdy

J'ai ré-installé mon laptop récemment avec l'excellent Ubuntu 14.04 et gnome3 plutôt que unity.

Mon laptop est tout beau

Et là, c'est le drame de la migration de données. En fait, les données, ça va.

Ça y est, mon laptop a plus de place

Par contre les dépendances des nombreux projets de dev, non merci.

Mon laptop rame à nouveau

J'ai donc décidé de n'installer ni npm, bower, grunt, scala et autres outils de dev sur mon poste. En fait, j'ai quand même craqué pour java et maven parce que je suis faible au fond.

Docker à la rescousse

J'ai quand même décidé de systématiser les fichiers Dockerfile pour contenir ces dépendances qui débordent. Vous savez, quand votre laptop véloce devient une véritable poubelle après quelques sessions de dev sur votre projet du boulot et vos cinq projets open-source. Avant, je faisais ça avec Vagrant associé à puppet, mais ça c'était avant 2014 😉 Une expérience récente pour faire une dev box angular m'a montré qu'au niveau perf, on pouvait faire mieux. Et en plus pour scala, je me doutais que ça ne passerait pas avec de la virtualisation complète.

Voilà donc la dernière version d'Ubuntu qui package une version réçente de docker pour mon plus grand plaisir.

Juste après, le Dockerfile qui m'a permis d'isoler une image de dev scala (play2) avec un peu de npm dedans pour OneCalendar pour ne rien vous cacher.

# Build with :
# docker build -t onecalendar/dev .
# Run with :
# docker run -i -t -p 9000:9000 -v $(pwd):/docker:rw <sha1-of-the-previous-command>

FROM ubuntu:14.04

RUN apt-get update
RUN apt-get install -y wget unzip mongodb npm nodejs openjdk-7-jdk

RUN wget "http://downloads.typesafe.com/play/2.2.3/play-2.2.3.zip" -O /tmp/play.zip
RUN unzip /tmp/play.zip -d /
ENV PATH $PATH:/play-2.2.3

EXPOSE 9000

WORKDIR /docker

ENTRYPOINT ["/bin/bash"]

Ça se passe presque de commentaires tellement c'est simple 😉

Oui, donc, il faut construire l'image puis la lancer.

Les options i et t servent à rester en mode interactif sur l'image pour lancer les commandes play. Ensuite, l'option p permet de mapper le port 9000 qui est le port du serveur de dev de play sur le port 9000 du laptop. L'option v quant à elle permet de mapper le répertoire courant du laptop sur le répertoire /docker de l'image.

Conclusion

Ainsi, on a son IDE sur son laptop et le play run est contenu dans l'image.

Ça fonctionne bien pour moi. À noter les commandes docker images pour voir toutes les images de son laptop et docker ps pour voir si des images docker sont en cours d'éxécution.