Table des matières

D35 - TP5 - Docker

Installer docker et docker-machine

Mettre en place docker.

Découverte de Docker

Vérifier votre installation et regarder les commandes de bases avec les étapes 1 à 3 de https://docs.docker.com/engine/getstarted/step_one/

Suivre le tutoriel https://docs.docker.com/engine/getstarted/step_four/ pour créer sa propre image.

Il est possible de passer des variables d’environnement lors de la construction de l’image sans que celles-ci n’y soient stockées (c’est utilise pour le proxy par exemple) : –build-arg HTTP_PROXY=http://...

Vous pouvez maintenant construire vos propres images, en personnalisant d’autres (java, maven, payara, mysql, …). Pour orchestrer l’installation d’un environnement complet composé de plusieurs conteneur il faut étudier : https://docs.docker.com/compose/

Travail à faire

Cas d'usage avec GitLab

Après avoir eu un compte sur https://gitlab.lsis.univ-tln.fr/, créer un projet, y déposer le projet de base créé par l’archetype maven quickstart et mettre en place l’intégration continue en suivant les instructions suivantes.

Ajouter simplement le fichier minimal suivant à la racine (Il indique l’image à utiliser et la commande).

.gitlab-ci.yml
package:
  image:  docker.lsis.univ-tln.fr:443/ebruno/maven:latest
  script: mvn package

Vérifier que la compilation et les tests passent, vérifier qu’une erreur est bien détecté. Par défaut, gitlab utilise des runner (https://gitlab.com/gitlab-org/gitlab-ci-multi-runner) partagé qui ont été configurés pour utiliser docker, vous pouvez installer des runners spécifiques sur n’importe quelle machine pour vos projets.

Utilisation d'un repository privé pour la compilation

Se connecter au repository privé (il faut un compte à demander à M. Bruno) et installer l’image Maven dans la VM :

docker login docker.lsis.univ-tln.fr:443
docker pull docker.lsis.univ-tln.fr:443/ebruno/maven:latest

Un simple test de maven :

docker run -v `pwd`:/usr/src/app -v ~/.m2:/home/user/.m2 -u `id -u`:`id -g` docker.lsis.univ-tln.fr:443/ebruno/maven:latest mvn -Duser.home=/home/user -version

Une compilation complète (ne marche pas en non root ou dans le groupe docker à cause du montage NFS) :

mvn archetype:generate \
 -DarchetypeGroupId=org.apache.maven.archetypes \
 -DarchetypeArtifactId=maven-archetype-quickstart \
 -DarchetypeVersion=1.1 \
 -DgroupId=fr.univtln.login \
 -DartifactId=MyApp \
 -Dversion=1.0-SNAPSHOT

cd MyApp

docker run -v `pwd`:/usr/src/app -v ~/.m2:/home/user/.m2 -u `id -u`:`id -g` docker.lsis.univ-tln.fr:443/ebruno/maven:latest mvn -Duser.home=/home/user package

Le répertoire courant est monté dans le conteneur dans la VM, ainsi que le ~/.m2