{"id":410,"date":"2017-08-09T15:12:55","date_gmt":"2017-08-09T14:12:55","guid":{"rendered":"http:\/\/elcep.legtux.org\/?p=410"},"modified":"2017-09-27T08:20:51","modified_gmt":"2017-09-27T07:20:51","slug":"un-conteneur-pour-postgresql-et-postgis","status":"publish","type":"post","link":"https:\/\/elcep.legtux.org\/?p=410","title":{"rendered":"Un conteneur pour postgreSQL et postgis"},"content":{"rendered":"<p>Il arrive des moments dans la vie o\u00f9 on a besoin d&rsquo;un petit serveur de base de donn\u00e9es rapidement, l\u00e0 tout de suite. Si \u00e7a vous est d\u00e9j\u00e0 arriv\u00e9, vous savez que c&rsquo;est parfois se lancer dans une aventure &#8230; qui si elle n&rsquo;est pas p\u00e9rilleuse, peut s&rsquo;av\u00e9rer longue et douloureuse.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-414\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-39-59.png\" alt=\"\" width=\"1000\" height=\"531\" srcset=\"https:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-39-59.png 1000w, https:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-39-59-300x159.png 300w, https:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-39-59-768x408.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Alors, pourquoi ne pas en profiter pour passer \u00e0 <a href=\"http:\/\/www.neogeo-online.net\/blog\/archives\/2227\/\">docker<\/a> ? Parce qu&rsquo;avec le principe de dockerfiles, l&rsquo;installation ne prend pas plus longtemps que de t\u00e9l\u00e9charger les packages.<\/p>\n<h2>Installation docker sur Ubuntu<\/h2>\n<p>Source : <a href=\"https:\/\/docs.docker.com\/engine\/installation\/linux\/ubuntu\/\">docker.com<\/a><\/p>\n<p>Le site de docker est tr\u00e8s bien fait. Sur Ubuntu 16.04, il suffira de lancer les lignes de commandes suivantes.<\/p>\n<pre>sudo apt-get install -y --no-install-recommends apt-transport-https ca-certificates curl software-properties-common\r\n curl -fsSL https:\/\/apt.dockerproject.org\/gpg | sudo apt-key add - apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D\r\n sudo add-apt-repository \"deb https:\/\/apt.dockerproject.org\/repo\/ \\\r\n ubuntu-$(lsb_release -cs) \\\r\n main\"\r\n sudo apt-get update\r\n sudo apt-get -y install docker-ce<\/pre>\n<p>Si tout s&rsquo;est d\u00e9roul\u00e9 sans accrocs, vous pouvez v\u00e9rifier que docker fonctionne avec :<\/p>\n<pre>sudo docker run hello-world<\/pre>\n<p>Il ne reste enfin quelques petits ajustements \u00e0 faire, notamment configurer votre utilisateur dans le groupe docker pour s&rsquo;abstraire de l&rsquo;utilisation de sudo par exemple. Vous trouverez ces choses-l\u00e0 sur cette <a href=\"https:\/\/docs.docker.com\/engine\/installation\/linux\/linux-postinstall\/\">page<\/a>.<\/p>\n<h2>Installation de postGIS et postgreSQL<\/h2>\n<p>Source : <a href=\"https:\/\/hub.docker.com\/r\/mdillon\/postgis\/\">postgis dockerfile<\/a><\/p>\n<p>Pour cr\u00e9er un conteneur docker il suffit de lancer la commande <em>docker run<\/em>. Docker va v\u00e9rifier si vous disposez d&rsquo;une \u00ab\u00a0image\u00a0\u00bb du service que vous souhaitez lancer. Si c&rsquo;est le cas, un conteneur sera cr\u00e9\u00e9, sinon les diff\u00e9rentes composantes de l&rsquo;image seront t\u00e9l\u00e9charg\u00e9es et le conteneur sera cr\u00e9\u00e9 dans la foul\u00e9e.<\/p>\n<p>On commence ici par cr\u00e9er un conteneur postGIS qui s&rsquo;appellera psql-futurSahel (C&rsquo;est l&rsquo;\u00e9tiquette du conteneur et cela n&rsquo;aura pas d&rsquo;influence sur la base de donn\u00e9es). On d\u00e9finit le mot de passe de postgreSQL et on sp\u00e9cifie que l&rsquo;on veut utiliser l&rsquo;image postgis fournie par l&rsquo;utilisateur mdillon.<\/p>\n<pre>docker run --name psql-futurSahel -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 mdillon\/postgis<\/pre>\n<p>Pour que cela fonction, il faut \u00e9galement installer un postgreSQL et le lier \u00e0 l&rsquo;image de postGIS. Ce qui nous permettra ensuite d&rsquo;acc\u00e9der \u00e0 l&rsquo;interface de base de donn\u00e9es et de nous connecter avec psql<\/p>\n<pre>docker run -it --link psql-futurSahel:postgres --rm postgres \\\r\n sh -c 'exec psql -h \"$POSTGRES_PORT_5432_TCP_ADDR\" -p \"$POSTGRES_PORT_5432_TCP_PORT\" -U postgres'<\/pre>\n<h2>Dans Postgre<\/h2>\n<p>Si tout s&rsquo;est pass\u00e9 comme il faut, suite \u00e0 la derni\u00e8re commande, et apr\u00e8s t\u00e9l\u00e9chargement des diff\u00e9rents constituants de l&rsquo;image, vous \u00eates rentr\u00e9 dans le conteneur et vous avez en face de vous un prompt psql.<\/p>\n<p>Vous pouvez donc utiliser les commandes habituelles de postgre. Il faut, une fois connect\u00e9 \u00e0 psql, cr\u00e9er une base de donn\u00e9es<\/p>\n<pre>CREATE DATABASE fs_gis;<\/pre>\n<p>On peut ensuite se connecter \u00e0 la base de donn\u00e9es<\/p>\n<pre>\\connect fs_gis;<\/pre>\n<p>Et lancer la commande<\/p>\n<pre>CREATE EXTENSION postgis;<\/pre>\n<p>La base est donc cr\u00e9\u00e9e en utilisant le template postGIS.<\/p>\n<h2>Peupler la base de donn\u00e9es<\/h2>\n<p>Vous avez maintenant un serveur de base de donn\u00e9es spatiales qui tourne et auquel vous pouvez acc\u00e9der depuis la machine h\u00f4te.<\/p>\n<p>Pour conna\u00eetre l&rsquo;IP du conteneur :<\/p>\n<pre>docker inspect idconteneur<\/pre>\n<p>Vous pouvez alors configurer vos outils de gestion de base de donn\u00e9es en utilisant l&rsquo;IP du conteneur et\/ou votre propre IP (ifconfig).<\/p>\n<p>Dans Qgis vous pouvez configurer la gestion de la base de la mani\u00e8re suivante :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-411\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-20-59.png\" alt=\"\" width=\"800\" height=\"400\" srcset=\"https:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-20-59.png 800w, https:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-20-59-300x150.png 300w, https:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-20-59-768x384.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>Et vous pouvez utiliser l&rsquo;extension Base de donn\u00e9es &gt; Gestionnaire de base de donn\u00e9es &gt; Gestionnaire de base de donn\u00e9es, pour importer dans postgreSQL vos donn\u00e9es en cliquant sur &lsquo;importer une couche ou un fichier&rsquo;. Cet outil va utiliser le script shp2psql de mani\u00e8re transparente pour l&rsquo;utilisateur.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-412\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-25-35.png\" alt=\"\" width=\"800\" height=\"434\" srcset=\"https:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-25-35.png 800w, https:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-25-35-300x163.png 300w, https:\/\/elcep.legtux.org\/wp-content\/uploads\/2017\/08\/Capture-d\u00e9cran-de-2017-08-09-13-25-35-768x417.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il arrive des moments dans la vie o\u00f9 on a besoin d&rsquo;un petit serveur de base de donn\u00e9es rapidement, l\u00e0 tout de suite. Si \u00e7a vous est d\u00e9j\u00e0 arriv\u00e9, vous savez que c&rsquo;est parfois se lancer dans une aventure &#8230; qui si elle n&rsquo;est pas p\u00e9rilleuse, peut s&rsquo;av\u00e9rer longue et douloureuse. Alors, pourquoi ne pas &hellip; <a href=\"https:\/\/elcep.legtux.org\/?p=410\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Un conteneur pour postgreSQL et postgis<\/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],"tags":[50,70,71,16],"class_list":["post-410","post","type-post","status-publish","format-standard","hentry","category-geekeries","tag-docker","tag-postgis","tag-postgresql","tag-qgis"],"_links":{"self":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/410","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=410"}],"version-history":[{"count":9,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/410\/revisions"}],"predecessor-version":[{"id":432,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/410\/revisions\/432"}],"wp:attachment":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}