Spustite server PostGIS ako kontajner Docker

Spustite Server Postgis Ako Kontajner Docker



Niet pochýb o tom, že Docker sa v posledných rokoch stal jedným z najpoužívanejších vývojárskych nástrojov. Docker nám umožňuje vyvíjať, baliť, odosielať a spúšťať aplikácie v izolovaných prostrediach, ktoré obsahujú všetky závislosti potrebné na spustenie aplikácie.

PostGIS je rozšírenie databázy PostgreSQL, ktoré pridáva podporu pre geografické dátové objekty. To nám umožňuje používať databázu PostgreSQL na ukladanie a dopytovanie priestorových údajov. Ako môžete hádať, kombinácia PostGIS a Docker poskytuje efektívnu a rozsiahlu metódu správy priestorových údajov.

V tomto návode sa naučíme, ako môžeme rýchlo nastaviť inštanciu PostGIS v kontajneri Docker. Pokryjeme aj niektoré základy PostGIS a naučíme sa, ako načítať priestorové údaje a vykonávať niektoré základné dotazy pomocou kontajnera.







Požiadavky:

Ak chcete pokračovať v tomto návode, uistite sa, že máte nasledujúce:



  1. Na vašom systéme je nainštalovaný Docker Engine. Môžete si pozrieť naše návody, ako nainštalovať Docker na váš cieľový systém.
  2. Základná znalosť PostgreSQL a priestorových údajov

Po splnení daných požiadaviek môžeme pokračovať v návode.



Spustite PostGIS v Dockeri

Pokračujme a nastavme kontajner PostGIS. Začneme vytiahnutím kontajnera PostGIS z Docker Hub pomocou nasledujúceho príkazu:





$ docker vytiahnuť postgis/postgis

Po stiahnutí obrázka môžeme kontajner spustiť pomocou obrázka, ako je znázornené v nasledujúcom príkaze:



$ docker run --name postgis-server -e POSTGRES_PASSWORD =password -d -p 5432:5432 postgis/postgis

V danom príkaze zadávame nasledujúce parametre:

  1. –name – Umožňuje nám zadať názov kontajnera.
  2. -e – Toto nám umožňuje nastaviť heslo PostgreSQL ako premennú prostredia. Toto je heslo, ktoré sa používa pre používateľa postgres.
  3. -d – Toto povie Dockeru, aby spustil kontajner na pozadí alebo v oddelenom režime.
  4. -p 5432:5432 – To nám umožňuje mapovať port 5432 vo vnútri kontajnera k hostiteľovi na porte 5432.

Ak chcete overiť, či je kontajner spustený, použite nasledujúci príkaz:

$ docker ps

V zozname by ste mali vidieť kontajner PostGIS.

Načítajte priestorové údaje v PostGIS

Teraz, keď máme spustený kontajner PostGIS, môžeme načítať priestorové údaje pomocou rôznych nástrojov a formátov, ako sú GeoJSON, CSV atď.

V tomto prípade používame súbor Shapefile, ako je znázornené v nasledujúcich príkazoch:

$ mkdir -p ~/data
$ cd ~/data
wget https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ unzip ne_110m_admin_0_country.zip

V daných príkazoch začneme vytvorením adresára na uloženie údajov, ktoré chceme načítať. Potom stiahneme geo údaje zo zadaného odkazu a rozbalíme ich do adresára.

Ďalším krokom je načítanie údajov do databázy. Začneme pripojením k databáze PostgreSQL pomocou nasledujúceho príkazu:

$ docker exec -it postgis-server psql -U postgres -d postgres

Ak sa zobrazí výzva na zadanie hesla, zadajte heslo, ktoré ste nakonfigurovali pri spustení kontajnera. Toto by vás malo overiť a dostať do prostredia PostgreSQL.

Po pripojení k databáze môžeme použiť nástroj „shp2pgsql“ na import údajov zo súborov Shapefiles, ktoré sme extrahovali v predchádzajúcich krokoch.

postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_country | psql -U postgres -d postgres

V predchádzajúcom príkaze používame voľbu -I na vytvorenie priestorového indexu pre rýchlejšie dotazovanie na priestorové údaje. Tiež špecifikujeme súradnicový systém ako 4326 pomocou parametra -s. EPSG:4326 je štandardný systém súradníc pre WGS 84.

Údaje dopytu PostGIS

Po načítaní údajov môžeme ukončiť utilitu PSQL spustením príkazu „\q“ alebo ukončením.

Ďalej, aby sme si overili, že máme načítané údaje, môžeme sa znova pripojiť k databáze spustením nasledujúceho príkazu:

$ docker exec -it postgis-container psql -U postgres -d postgres

Ďalej môžete spustiť základné priestorové dotazy, aby ste si overili, že máte uložené údaje.

Záver

V tomto návode ste sa naučili, ako spustiť server PostGIS ako kontajner Docker a načítať údaje do databázy.