Aside

La chasse aux dépendances avec docker

On veut compiler une nouvelle librairie dans notre beau code. Le “README” indique seulement 2 dépendances… Par expérience, c’est rare que la liste soit exhaustive.

Voici un truc rapide de la part d’un collègue pour aller à la «chasse aux dépendances» sans cochonner sa machine. Ça implique Docker et linux.

À mettre dans Dockerfile

FROM ubuntu:14.04
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update

# regular tools needed for the job
RUN apt-get install -y bash binutils build-essential libstdc++6

# the actual "new dependencies" we are hunting down
RUN apt-get install -y 'libsigc++-2.0-dev' libglibmm-2.4-dev

Sauvegarder dans le répertoire à partir duquel l’image sera constuite. Tout ce que le répertoire contient sera copié dans l’image, alors $HOME n’est probablement pas un bon endroit pour ça.

Pour construire l’image:

docker build -t nom_de_ton_image .

Exécuter et se connecter à l’image.

docker run --rm -ti -v $PWD:/buildenv nom_de_ton_image:latest bash

 

Ensuite, mettre le code désiré dans /buildenv. Essayer de “builder”. Exécuter les “apt install” voulus et les ajouter à mesure dans le Dockerfile. Une fois que ça fonctionne, quitter. Reconstruire le docker à partir du Dockerfile à jour. Essayer de “rebuilder” sans avoir à exécuter de “apt install“. Si c’est bon, la recette est complète.

Merci Éric et Jean!

Leave a Reply