2.4.1.1 : Pour Ubuntu
Nous allons voir dans cette section comment écrire la recette de l'image docker. Le fichier docker/Dockerfile :Tout d'abord, nous devons dire à docker quel image nous voulons prendre comme base pour construire la notre. Si rien n'est précisé, l'image sera prise sur docker hub :
1 2 |
# Version 0.1 FROM ubuntu:20.04 |
Il est possible de demander la dernière image disponible avec ubuntu:latest, mais il est préférable de la spécifier pour garantir que les différentes installations fonctionneront dans le futur. Ensuite, on dit à docker que l'on veut un terminal bash :
1 2 |
# Ensure use of bash SHELL ["/bin/bash","-c"] |
Les images Ubuntu qui proviennent de docker hub sont quelques peu capricieuses depuis la version 20.04 car il faut leur spécifier l'heure et la zone temporelle :
1 2 3 4 5 6 |
# Time Zone ENV TZ=Europe/Paris RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN touch /etc/apt/apt.conf.d/99verify-peer.conf \ && echo >>/etc/apt/apt.conf.d/99verify-peer.conf "Acquire { https::Verify-Peer false }" |
Une autre petite spécification des images Ubuntu de docker hub est que l'on doit informer le gestionnaire de configuration debconf que l'on n'aura aucune intéraction pendant l'installation de notre image (donc pas de yes ou no à entrer)
1 2 3 |
# Apt and debconf configuration RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections ARG DEBIAN_FRONTEND=noninteractive |
La dernière spécificité des images Ubuntu de docker hub est que l'on doit mettre à jour la liste de paquets avant d'installer le moindre programme :
1 2 |
# Update RUN apt-get -y update |
Maintenant, nous pouvons commencer à installer nos programmes. Et nous devons commencer par apt-utils :
1 2 |
# Anstallation RUN apt-get install -y apt-utils |
Ensuite, wget qui permet de télécharger des fichiers noteLe téléchargement de fichiers quelconques (données, configuration, test, etc) est très utile pour alléger le projet git :
1 |
RUN apt-get install -y wget |
Installons nos outils de compilation, gcc et g++ pour le C et le C++, cmake pour gérer le projet, make pour gérer la compilation et git pour gérer les versions de projet (pas forcément le notre) :
1 |
RUN apt-get install -y gcc g++ cmake make git |
Pour générer la documentation, nous utiliserons doxygen et graphviz pour construire des graphes :
1 |
RUN apt-get install -y doxygen graphviz |
L'évaluation de la couverture des tests sera effectuer par gcovrnoteD'où l'importante d'utiliser gcc et g++. :
1 2 |
# Gcov goes with gcc RUN apt-get install -y gcovr |
La dernière chose que nous devons faire est de nettoyer l'image des fichiers temporaires utilisés par l'apt-getnoteCe sont généralement les archives téléchargées des programme que l'on installe. (il est important de le faire quelque soit l'OS utilisé afin d'obtenir une image plus petite) :
1 |
RUN apt-get -y clean autoremove |
Le fichier Dockerfile complet :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# Version 0.1 FROM ubuntu:20.04 # Ensure use of bash SHELL ["/bin/bash","-c"] # Time Zone ENV TZ=Europe/Paris RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN touch /etc/apt/apt.conf.d/99verify-peer.conf \ && echo >>/etc/apt/apt.conf.d/99verify-peer.conf "Acquire { https::Verify-Peer false }" # Apt and debconf configuration RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections ARG DEBIAN_FRONTEND=noninteractive # Update RUN apt-get -y update # Anstallation RUN apt-get install -y apt-utils RUN apt-get install -y wget RUN apt-get install -y gcc g++ cmake make git RUN apt-get install -y doxygen graphviz # Gcov goes with gcc RUN apt-get install -y gcovr RUN apt-get -y clean autoremove |
Vous pouvez le télécharger ici.