Instruction de build Dockerfile avancées
De nombreuses instructions de build existent pour Dockerfile.
La documentation officielle Dockerfile reference référence l'ensemble des instructions disponibles
Rappel: commandes de build
# builder l'image vote
docker build -t vote:builder vote
# lancer l'image vote
docker run -d --name builder1 vote:builder
# lancer une session shell dans le container
# sera utile pour tester vos manipulations!
docker exec -it builder1 bash
# Supprimer un container et une image
docker stop builder1
docker rm builder1
docker rmi vote:builder
Exercice
Configurer l'image pour que l'utilisateur crafteo soit utilisé pour lancer le processus principal
- Pour créer un utilisateur
crafteosous Linux Alpine:adduser -S crafteo
Il sera nécéssaire d'ajouter le chemin /home/crafteo/.local/bin au PATH du user crafteo pour éxecuter les binaires installés par Python.
- Ajouter une instruction au Dockerfile permettant de définir la variable
PATHtel que:PATH=$PATH:/home/crafteo/.local/bin
Attention: il n'est pas possible de binder un port <1024 avec un utilisateur non-root avec Linux, il sera nécéssaire d'utiliser un port plus élevé. Modifier votre Dockerfile pour lancer l'application en utilisant le port 8080.
Ajouter un healthcheck permettant de vérifier le fonctionnement de l'image avec curl localhost:80. Ce healthcheck permettra de vérifier que l'image est bien active si une réponse est renvoyée lors d'un appel à localhost:80
- Il peut-être nécéssaire d'installer
curlou d'utiliser une image de base ou il l'est déjà - Pour installer
curlsous Linux Alpine:apk add curl
Quel est le comportement d'un container Docker en cas de failure du healthcheck?
Ajouter un argument utilisable au build de l'image Vote permettant de spécifier la version de l'image Python de base à utiliser. Utiliser la version 3.7-alpine par défaut.
Par exemple, il devra être possible de lancer les commandes:
# utiliser Python 3.8
docker build -t vote:builder --build-arg PYTHON_VERSION=3.8-alpine vote
# utiliser Python 3.7 par défaut
docker build -t vote:builder vote