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/
Ajouter simplement le fichier minimal suivant à la racine (Il indique l’image à utiliser et la commande).
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.
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