{"id":446,"date":"2018-08-06T16:31:49","date_gmt":"2018-08-06T15:31:49","guid":{"rendered":"http:\/\/elcep.legtux.org\/?p=446"},"modified":"2018-08-09T16:31:33","modified_gmt":"2018-08-09T15:31:33","slug":"construire-un-conteneur-pour-cormas","status":"publish","type":"post","link":"https:\/\/elcep.legtux.org\/?p=446","title":{"rendered":"Construire un container pour Cormas"},"content":{"rendered":"<p><a href=\"http:\/\/cormas.cirad.fr\/indexeng.htm\">Cormas<\/a> est une plateforme de mod\u00e9lisation multi-agents d\u00e9velopp\u00e9e en SmallTalk. Historiquement le choix de d\u00e9veloppement s&rsquo;\u00e9tait port\u00e9 sur VisualWork mais depuis quelque temps l&rsquo;\u00e9quipe regardait en direction de <a href=\"https:\/\/pharo.org\/\">Pharo<\/a>.<\/p>\n<figure id=\"attachment_451\" aria-describedby=\"caption-attachment-451\" style=\"width: 275px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-451\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2018\/05\/cormas_create_package-275x300.png\" alt=\"\" width=\"275\" height=\"300\" srcset=\"https:\/\/elcep.legtux.org\/wp-content\/uploads\/2018\/05\/cormas_create_package-275x300.png 275w, https:\/\/elcep.legtux.org\/wp-content\/uploads\/2018\/05\/cormas_create_package.png 684w\" sizes=\"auto, (max-width: 275px) 100vw, 275px\" \/><figcaption id=\"caption-attachment-451\" class=\"wp-caption-text\">Cormas sous pharo<\/figcaption><\/figure>\n<p>Le portage se fait petit \u00e0 petit, et la feuille de route avance assez rapidement. Si le sujet vous int\u00e9resse, nous sommes en train de r\u00e9diger un <a href=\"https:\/\/github.com\/cormas\/Booklet-CORMAS\/releases\/tag\/untagged-e9eb6a966c4a94cc7987\">manuel<\/a> d&rsquo;utilisation de cette nouvelle version de Cormas sous pharo.<\/p>\n<p>Comme c&rsquo;est le moment des grandes d\u00e9cisions on s&rsquo;interroge sur les passerelles avec d&rsquo;autres outils r\u00e9guli\u00e8rement utilis\u00e9s par les communaut\u00e9s de chercheurs utilisant les SMA et plus largement la simulation. Pour le moment l&rsquo;attention est port\u00e9e sur les connexions entre cette nouvelle version de cormas et <a href=\"https:\/\/www.r-project.org\/\">R<\/a> et cormas\/<a href=\"https:\/\/openmole.org\/\">openMole<\/a>.<\/p>\n<p>Pour cette derni\u00e8re, openMole int\u00e8gre un syst\u00e8me de conteneur bas\u00e9 sur udocker. Je suis donc en train de fouiller les possibilit\u00e9s de dockeris\u00e9 cormas\/pharo pour dans un futur que j&rsquo;esp\u00e8re assez proche nous puissions faire l&rsquo;ensemble de nos explorations en utilisant openMole.<\/p>\n<h2>Ecrire un dockerfile<\/h2>\n<pre># Set the base image\r\nFROM ubuntu\r\n# Dockerfile author \/ maintainer\r\nMAINTAINER Etienne  &lt;moi@truc.fr&gt;\r\n\r\n# Update software repository\r\n# and install dependencies\r\nrun dpkg --add-architecture i386\r\nrun apt-get update &amp;&amp; apt-get install -y curl unzip libx11-6:i386 libgl1-mesa-glx:i386 libfontconfig1:i386 libssl1.0.0:i386 libcairo2:i386\r\n\r\nRUN mkdir cormas &amp;&amp; cd cormas\r\nRUN curl https:\/\/get.pharo.org | bash\r\nRUN .\/pharo Pharo.image config http:\/\/ss3.gemstone.com\/ss\/Cormas --install=development<\/pre>\n<h2>Construire un conteneur \u00e0 partir du dockerfile<\/h2>\n<pre>sudo docker build -t cormas<\/pre>\n<h2>Lancer un conteneur \u00e0 partir du build<\/h2>\n<pre>docker run --name cormas_instance -t cormas<\/pre>\n<h2>Tester le fonctionnement<\/h2>\n<p>Votre conteneur doit \u00eatre en train de fonctionner. Pour le v\u00e9rifier, vous pouvez lancer les commandes suivantes.<\/p>\n<pre>docker ps -a\r\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\r\n914f52adbd98 cormas \"\/bin\/bash\" About a minute ago Up About a minute cormas_instance\r\neeba02bea345 mdillon\/postgis \"docker-entrypoint.s\u2026\" 2 weeks ago Exited (0) 2 weeks ago psql-futurSahel<\/pre>\n<p>Vous voyez que j&rsquo;ai deux conteneurs (<em>psql-futurSahel<\/em> et <em>cormas_instance<\/em>) et que le conteneur cormas_instance est en cour de fonctionnement.<\/p>\n<p>On peut maintenant essayer d&rsquo;interagir avec pharo \u00e0 l&rsquo;int\u00e9rieur du conteneur<\/p>\n<pre>sudo docker exec -it 914f52adbd98 \/pharo Pharo.image eval '1 + 20'<\/pre>\n<p>Si tout s&rsquo;est bien pass\u00e9, vous constaterez que pharo vous r\u00e9pond de mani\u00e8re aimable 21 !<\/p>\n<h4>Note :<\/h4>\n<p>Pour pousser un nouveau conteneur<\/p>\n<pre>sudo docker tag cormas elcep\/cormas\r\nsudo docker push elcep\/cormas<\/pre>\n<p>&nbsp;<\/p>\n<h4>R\u00e9f\u00e9rences :<\/h4>\n<ul>\n<li>Un siteweb pour se tenir la main : <a href=\"https:\/\/deis.com\/blog\/2015\/creating-sharing-first-docker-image\/\">https:\/\/deis.com\/blog\/2015\/creating-sharing-first-docker-image\/ <\/a><\/li>\n<li>Pharo et la ligne de commande : <a href=\"http:\/\/pharobooks.gforge.inria.fr\/PharoByExampleTwo-Eng\/latest\/ZeroConf.pdf\">http:\/\/pharobooks.gforge.inria.fr\/PharoByExampleTwo-Eng\/latest\/ZeroConf.pdf<\/a><\/li>\n<li>etc.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Cormas est une plateforme de mod\u00e9lisation multi-agents d\u00e9velopp\u00e9e en SmallTalk. Historiquement le choix de d\u00e9veloppement s&rsquo;\u00e9tait port\u00e9 sur VisualWork mais depuis quelque temps l&rsquo;\u00e9quipe regardait en direction de Pharo. Le portage se fait petit \u00e0 petit, et la feuille de route avance assez rapidement. Si le sujet vous int\u00e9resse, nous sommes en train de r\u00e9diger &hellip; <a href=\"https:\/\/elcep.legtux.org\/?p=446\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Construire un container pour Cormas<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30,8],"tags":[74,50],"class_list":["post-446","post","type-post","status-publish","format-standard","hentry","category-geekeries","category-sma","tag-cormas","tag-docker"],"_links":{"self":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=446"}],"version-history":[{"count":11,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/446\/revisions"}],"predecessor-version":[{"id":469,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/446\/revisions\/469"}],"wp:attachment":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}