23
Dockerisation d'une application avec interface graphique : l'exemple de mixmodGUI S. Gully, F.Langrognet, N. Thouvenin 9e rencontre DevelopR6 avec 2RCE Dijon - 2 juin 2016

Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Embed Size (px)

Citation preview

Page 1: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Dockerisation d'une application avec interface graphique : l'exemple de

mixmodGUI

S. Gully, F.Langrognet, N. Thouvenin

9e rencontre DevelopR6 avec 2RCEDijon - 2 juin 2016

Page 2: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

MIXMOD

Ensemble logiciel de classification des données par modèles de mélanges

Page 3: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Composants logiciels MIXMOD

LibMixmod (C++)

Rmixmod

PyMixmod

Et … mixmodGUI

Page 4: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

mixmodGUI

Interface graphique (QT) de MIXMODSans recours à un environnement tiers (python, R)

Page 5: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Construction de mixmodGUI

Exécutable statique Exécutable dynamique

Gestion des dépendances

Page 6: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Diffusion de mixmodGUI

Contexte - Difficultés❏ Plusieurs centaines de téléchargements par an dans des contextes

hétérogènes (OS, distributions, …)❏ Nombreuses dépendances : QT, QWT, XML++❏ Compatibilité avec les bibliothèques déjà installées sur le système❏ Problèmes de rétro-compatibilité

Exemple : libqwt6.1 / 6.0$ mixmodGUI/usr/bin/mixmodGUI_exe: symbol lookup error: /usr/lib/mixmodGUI/mixmod/libmixmod_qt.so: undefined symbol: _ZNK11QwtPlotItem12updateLegendEP9QwtLegend

Page 7: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Et si Docker était une/la solution ?

Page 8: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Nous souhaitons tester différents outils de classification :

Premier candidat : Mixmod

C’est parti ...

Page 9: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Téléchargement ...

Page 10: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

$ wget http://www.mixmod.org/IMG/deb/mixmodGUI_1-2-1_x86_64-applications.deb

$ dpkg -i mixmodGUI_1-2-1_x86_64-applications.deb

Installation Linux... trop facile...

Page 11: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

$ sudo apt-get install build-essential $ sudo apt-get bin86 $ sudo apt-get install kernel-package $ sudo apt-get install gcc-5-base$ sudo apt-get install libqt4-xml $ sudo apt-get install libqt4-xmlpatterns $ sudo apt-get install libqtcore4 $ sudo apt-get install libqtgui4 $ sudo apt-get install libqwt6$ sudo apt-get install ...$ sudo apt-get install …

$ mixmodGUI

ah oui... les dépendances... no soucy !

apt-get install

Page 12: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

mixmodGUI/usr/bin/mixmodGUI_exe: symbol lookup error: /usr/lib/mixmodGUI/mixmod/libmixmod_qt.so: undefined symbol: _ZNK11QwtPlotItem12updateLegendEP9QwtLegend

Page 13: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Stéphane, Mixmod, t’arrives à l’installer sur ta Debian ?

A priori, ça démarre !

OK, ça doit-être ma version d’Ubuntu ...

Page 14: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Comment avoir une version Debian sur mon poste Ubuntu ?

Page 15: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Je vais rejouer mon installation dans un container Docker, et hop le tour est joué

Page 16: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Construisons un DockerFile

Page 17: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

$ docker build .[…] ---> 7d48fe5fab64Step 6 : RUN apt-get install -y libqwt6 ---> Running in d87ad53ccc53Reading package lists...Building dependency tree...[…]

$ docker run -it 56474a8dc748 mixmodGUIError: [...]

$ vi Dockerfile$ docker build .[…] ---> 7d48fe5fab64Step 6 : RUN apt-get install -y libqwt6 ---> Running in d87ad53ccc53Reading package lists...Building dependency tree...[…]

$ docker run -it 1e51cd736000 mixmodGUIError: [...]

essais … erreurs ….

L’informatique c’est pas magique

Page 19: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

La solution (1/2) : le Dockerfile

Page 20: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

La solution (2/2) : le docker-compose.yml

Page 21: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

DEMO

https://github.com/touv/docker-mixmod

Page 22: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même
Page 23: Dockerisation d'une application avec interface graphique ...lmb.univ-fcomte.fr/IMG/pdf/mixmodgui-docker.pdf · Docker est un bon outil pour packager des logiciels complexes et même

Docker est un bon outil pour packager des logiciels complexes et même des interfaces graphiques !

Limitations :

- Ne fonctionne que dans un environnement Linux- Nécessite de construire l’image localement avant usage car UID/GID- Partage des données pas forcément simple (le conteneur dispose de son filesystem ⇒ utiliser des volumes

docker ?)

Autre cas d’usages possibles :

- Conteneuriser des applications de bureautiques (sécurité, facilité d’installation)- Conteneuriser un IDE pré-configuré à coté du code source (toute l’équipe de dev avec le même outil, facile de

déployer un nouvel environnement de dev)

Diffusion de mixmodGUI:

- Solution intéressante pour compléter l’offre de diffusion (en plus des packages pour linux, des installateurs pour windows, …)

Conclusion