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
27
28
29
30
31
32
33
# 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.