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.