docker_TP/explication_dockerfile.md

3.4 KiB

DockerFile

On peut consulter la documentation des instructions sur le site de Docker.

Fichier

FROM httpd:alpine3.17

LABEL maintainer="Tom Moguljak"
LABEL version="1.8"
LABEL tp="3"

COPY ./dayScheduler/ /usr/local/apache2/htdocs/

RUN sed -i 's/Work Day Scheduler/Tom Moguljak/g' /usr/local/apache2/htdocs/index.html

ENV school="IUT"
ENV level="1.8"
 
HEALTHCHECK --interval=1m --timeout=1s \
    CMD curl --fail http://localhost:80/ || exit 1

Commandes

Définir l'image utilisée

FROM httpd:alpine3.17

Tout dockerfile doit commencer par une ligne FROM. Pour trouver l'image, on va sur DockerHub et on cherche le nom de l'image qu'on veut (ici c'est httpd). On va préférer les images officielles, marquées par un badge vert avec une étoile. On clique sur le lien, on va dans l'onglet Tags et on trouve la version la plus récente,ou la version demandée dans l'énoncé (on peut utiliser le filtre). Il suffit ensuite de copier le code donné sur le site, ici c'est docker pull httpd:alpine3.19, mais on enlève le "docker pull".

Il faut à tout prix éviter la version "latest" ou de prendre la version en haut de page, sans rien après le nom de l'image (ex: httpd) et qui correspond à la version latest.

???

RUN sed -i 's/Work Day Scheduler/Tom Moguljak/g' /usr/local/apache2/htdocs/index.html

T

Ajouter une étiquette

LABEL maintainer="Tom Moguljak"

Une ligne LABEL permet de créer une étiquette pour l'image. Ici le nom de l'étiquette est "maintainer" et elle contient la valeur "Tom Moguljak".

Quand on a plusieurs étiquettes à définir, on peut le faire en plusieurs lignes :

LABEL maintainer="Tom Moguljak"
LABEL version="1.8"
LABEL tp="3"

Ou en une seule, en séparant les définitions par un espace :

LABEL maintainer="Tom Moguljak" version="1.8" tp="3"

Ajouter une variable d'environnement

ENV school="IUT"

Une ligne ENV permet de créer une variable d'environnement dans l'image. Ici le nom de la variable d'environnement est "school" et elle contient la valeur "IUT".

Comme pour les étiquettes, quand on a plusieurs variables d'environnement à définir, on peut le faire en plusieurs lignes :

ENV school="IUT"
ENV level="1.8"

Ou en une seule, en séparant les définitions par un espace :

ENV school="IUT" level="1.8"

Ajouter le contenu d'un dossier

COPY ./dayScheduler/ /usr/local/apache2/htdocs/

Une ligne COPY permet d'ajouter le contenu d'un dossier présent sur la machine (ici le dossier "dayScheduler") à l'image (ici le chemin dans l'image est /usr/local/apache2/htdocs/).

Si il est demandé d'ajouter le contenu d'un git, il faut faire git clone d'abord

Faire des tests de survie

HEALTHCHECK --interval=1m --timeout=1s CMD curl --fail http://localhost:80/ || exit 1

Une ligne HEALTHCHECK permet de faire des tests de survie. Ici le test a un intervale de 1 seconde.

Utilisation

Pour créer l'image, on fait :

docker build -t mapremiereimage:1.0 .

Pour lancer l'image, on fait :

docker run -d -p 8080:80 mapremiereimage:1.0 --name contimage

Pour arrêter l'image, on fait :

docker stop contimage

Pour voir le résultat, on va sur la page localhost:8080 dans un navigateur.