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 :
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
|
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
|
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
|
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
|
RUN apt-get -y update
|
Maintenant, nous pouvons commencer à installer nos programmes. Et nous devons commencer par
apt-utils :
1
2
|
RUN apt-get install -y apt-utils
|
Ensuite,
wget qui permet de télécharger des fichiers :
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
gcovr :
1
2
|
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-get (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
27
28
29
30
31
32
33
|
FROM ubuntu:20.04
SHELL ["/bin/bash","-c"]
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 }"
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get -y update
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
RUN apt-get install -y gcovr
RUN apt-get -y clean autoremove
|
Vous pouvez le télécharger
ici.