Cormas est une plateforme de modélisation multi-agents développée en SmallTalk. Historiquement le choix de développement s’était porté sur VisualWork mais depuis quelque temps l’équipe regardait en direction de Pharo.
Le portage se fait petit à petit, et la feuille de route avance assez rapidement. Si le sujet vous intéresse, nous sommes en train de rédiger un manuel d’utilisation de cette nouvelle version de Cormas sous pharo.
Comme c’est le moment des grandes décisions on s’interroge sur les passerelles avec d’autres outils régulièrement utilisés par les communautés de chercheurs utilisant les SMA et plus largement la simulation. Pour le moment l’attention est portée sur les connexions entre cette nouvelle version de cormas et R et cormas/openMole.
Pour cette dernière, openMole intègre un système de conteneur basé sur udocker. Je suis donc en train de fouiller les possibilités de dockerisé cormas/pharo pour dans un futur que j’espère assez proche nous puissions faire l’ensemble de nos explorations en utilisant openMole.
Ecrire un dockerfile
# Set the base image FROM ubuntu # Dockerfile author / maintainer MAINTAINER Etienne <moi@truc.fr> # Update software repository # and install dependencies run dpkg --add-architecture i386 run apt-get update && apt-get install -y curl unzip libx11-6:i386 libgl1-mesa-glx:i386 libfontconfig1:i386 libssl1.0.0:i386 libcairo2:i386 RUN mkdir cormas && cd cormas RUN curl https://get.pharo.org | bash RUN ./pharo Pharo.image config http://ss3.gemstone.com/ss/Cormas --install=development
Construire un conteneur à partir du dockerfile
sudo docker build -t cormas
Lancer un conteneur à partir du build
docker run --name cormas_instance -t cormas
Tester le fonctionnement
Votre conteneur doit être en train de fonctionner. Pour le vérifier, vous pouvez lancer les commandes suivantes.
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 914f52adbd98 cormas "/bin/bash" About a minute ago Up About a minute cormas_instance eeba02bea345 mdillon/postgis "docker-entrypoint.s…" 2 weeks ago Exited (0) 2 weeks ago psql-futurSahel
Vous voyez que j’ai deux conteneurs (psql-futurSahel et cormas_instance) et que le conteneur cormas_instance est en cour de fonctionnement.
On peut maintenant essayer d’interagir avec pharo à l’intérieur du conteneur
sudo docker exec -it 914f52adbd98 /pharo Pharo.image eval '1 + 20'
Si tout s’est bien passé, vous constaterez que pharo vous répond de manière aimable 21 !
Note :
Pour pousser un nouveau conteneur
sudo docker tag cormas elcep/cormas sudo docker push elcep/cormas
Références :
- Un siteweb pour se tenir la main : https://deis.com/blog/2015/creating-sharing-first-docker-image/
- Pharo et la ligne de commande : http://pharobooks.gforge.inria.fr/PharoByExampleTwo-Eng/latest/ZeroConf.pdf
- etc.