Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
enseignement:d35:tp:docker [2018/11/09 10:23] Emmanuel Brunoenseignement:d35:tp:docker [2023/09/20 18:52] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== D35 - TP5 - Docker ======
 +===== Installer docker et docker-machine =====
 +[[docker:dockerinvm|Mettre en place docker]].
 +
 +==== Découverte de Docker ====
 +<note>
 +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.
 +</note>
 +
 +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 ====
 +  * Mettre en place plusieurs serveurs MYSQL sur votre machine chacun doit pouvoir être utilisé par le client sur l'hôte.
 +    * Modifier le pour que les base de données soit dans des conteneurs séparés (si vous êtes root vous pouvez aussi monter un répertoire local).
 +  * Créer un conteneur qui contient et exécute une application peut exécuter une application Java.
 +  * En utilisant docker-compose, créer des conteneurs qui permette en une seule commande de lancer une base de données et une application java qui s'y connecte.
 +  * Compiler une application Java avec Maven en utilisant docker. Si vous n'êtes pas root et ne pouvez pas monter les volumes de l'hôtes, un indice cherchez avec ONBUILD. 
 +
 +==== Cas d'usage avec GitLab ====
 +<note>
 +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. 
 +</note>
 +
 +Ajouter simplement le fichier minimal suivant à la racine (Il indique l'image à utiliser et la commande).
 +
 +<file | .gitlab-ci.yml>
 +package:
 +  image:  docker.lsis.univ-tln.fr:443/ebruno/maven:latest
 +  script: mvn package
 +</file>
 +
 +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 :
 +<cli>
 +docker login docker.lsis.univ-tln.fr:443
 +docker pull docker.lsis.univ-tln.fr:443/ebruno/maven:latest
 +</cli>
 +
 +Un simple test de maven :
 +<cli>
 +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
 +</cli>
 +
 +Une compilation complète (ne marche pas en non root ou dans le groupe docker à cause du montage NFS) :
 +
 +<cli>
 +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
 +</cli>
 +Le répertoire courant est monté dans le conteneur dans la VM, ainsi que le ~/.m2
 +
 +{{tag>D35 TP Docker }}
  
 ---- struct data ---- ---- struct data ----