Dockerisation d'une application avec interface graphique...
Transcript of Dockerisation d'une application avec interface graphique...
![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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/1.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/2.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/3.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/4.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/5.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/6.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/7.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/8.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/9.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/10.jpg)
$ 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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/11.jpg)
$ 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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/12.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/13.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/14.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/15.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/16.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/17.jpg)
$ 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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/19.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/20.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/21.jpg)
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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/22.jpg)
![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](https://reader031.fdocuments.in/reader031/viewer/2022022709/5bec1c7b09d3f231188cbd8f/html5/thumbnails/23.jpg)
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