Upload
phungthuy
View
218
Download
0
Embed Size (px)
Citation preview
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
MIXMOD
Ensemble logiciel de classification des données par modèles de mélanges
Composants logiciels MIXMOD
LibMixmod (C++)
Rmixmod
PyMixmod
Et … mixmodGUI
mixmodGUI
Interface graphique (QT) de MIXMODSans recours à un environnement tiers (python, R)
Construction de mixmodGUI
Exécutable statique Exécutable dynamique
Gestion des dépendances
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
Et si Docker était une/la solution ?
Nous souhaitons tester différents outils de classification :
Premier candidat : Mixmod
C’est parti ...
Téléchargement ...
$ 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...
$ 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
mixmodGUI/usr/bin/mixmodGUI_exe: symbol lookup error: /usr/lib/mixmodGUI/mixmod/libmixmod_qt.so: undefined symbol: _ZNK11QwtPlotItem12updateLegendEP9QwtLegend
Stéphane, Mixmod, t’arrives à l’installer sur ta Debian ?
A priori, ça démarre !
OK, ça doit-être ma version d’Ubuntu ...
Comment avoir une version Debian sur mon poste Ubuntu ?
Je vais rejouer mon installation dans un container Docker, et hop le tour est joué
Construisons un DockerFile
$ 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
On cherche et on trouve !
La solution (1/2) : le Dockerfile
La solution (2/2) : le docker-compose.yml
⇔
DEMO
https://github.com/touv/docker-mixmod
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