Zaženite strežnik PostGIS kot vsebnik Docker

Zazenite Streznik Postgis Kot Vsebnik Docker



Nobenega dvoma ni, da je Docker v zadnjih letih postal eno najbolj razširjenih orodij za razvijalce. Docker nam omogoča razvoj, pakiranje, pošiljanje in izvajanje aplikacij v izoliranih okoljih, ki vsebujejo vse odvisnosti, ki so potrebne za izvajanje aplikacije.

PostGIS je razširitev zbirke podatkov PostgreSQL, ki dodaja podporo za objekte geografskih podatkov. To nam omogoča uporabo baze podatkov PostgreSQL za shranjevanje in poizvedovanje po prostorskih podatkih. Kot lahko ugibate, kombinacija PostGIS in Docker zagotavlja učinkovito in obsežno metodo upravljanja prostorskih podatkov.

V tej vadnici se bomo naučili, kako lahko hitro nastavimo primerek PostGIS znotraj vsebnika Docker. Pokrili bomo tudi nekaj osnov PostGIS in se naučili, kako naložiti prostorske podatke in izvesti nekaj osnovnih poizvedb z vsebnikom.







Zahteve:

Če želite slediti tej vadnici, zagotovite, da imate naslednje:



  1. Nameščen Docker Engine v vašem sistemu. Oglejte si naše vadnice o tem, kako namestiti Docker na vaš ciljni sistem.
  2. Osnovno poznavanje PostgreSQL in prostorskih podatkov

Ko so dane zahteve izpolnjene, lahko nadaljujemo z vadnico.



Zaženite PostGIS v Dockerju

Nadaljujmo in nastavimo vsebnik PostGIS. Začnemo s potegom vsebnika PostGIS iz Docker Huba z naslednjim ukazom:





$ docker pull postgis/postgis

Ko prenesemo sliko, lahko zaženemo vsebnik s sliko, kot je prikazano v naslednjem ukazu:



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

V podanem ukazu določimo naslednje parametre:

  1. –name – To nam omogoča, da določimo ime vsebnika.
  2. -e – To nam omogoča, da geslo PostgreSQL nastavimo kot spremenljivko okolja. To je geslo, ki se uporablja za uporabnika postgres.
  3. -d – To pove Dockerju, naj zažene vsebnik v ozadju ali ločenem načinu.
  4. -p 5432:5432 – To nam omogoča preslikavo vrat 5432 znotraj vsebnika na gostitelja na vratih 5432.

Če želite preveriti, ali vsebnik deluje, uporabite naslednji ukaz:

$ docker ps

Na seznamu bi morali videti vsebnik PostGIS.

Naložite prostorske podatke v PostGIS

Zdaj, ko imamo vsebnik PostGIS v teku, lahko naložimo prostorske podatke z različnimi orodji in formatom, kot so GeoJSON, CSV itd.

V tem primeru uporabimo Shapefile, kot je prikazano v naslednjih ukazih:

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

V podanih ukazih začnemo z ustvarjanjem imenika za shranjevanje podatkov, ki jih želimo naložiti. Nato prenesemo geografske podatke z navedene povezave in jih ekstrahiramo v imenik.

Naslednji korak je nalaganje podatkov v bazo podatkov. Začnemo s povezovanjem z bazo podatkov PostgreSQL z naslednjim ukazom:

$ docker exec -it postgis-strežnik psql -U postgres -d postgres

Če ste pozvani k vnosu gesla, vnesite geslo, ki ste ga konfigurirali pri zagonu vsebnika. To bi moralo potrditi vašo pristnost in vas vrniti v lupino PostgreSQL.

Ko se povežemo z bazo podatkov, lahko uporabimo pripomoček »shp2pgsql« za uvoz podatkov iz datotek oblike, ki smo jih ekstrahirali v prejšnjih korakih.

postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_držav | psql -U postgres -d postgres

V prejšnjem ukazu z možnostjo -I ustvarimo prostorski indeks za hitrejše poizvedovanje po prostorskih podatkih. Določimo tudi koordinatni sistem kot 4326 s parametrom -s. EPSG:4326 je standardni sistem koordinatnega stanja za WGS 84.

Podatki poizvedbe PostGIS

Ko naložimo podatke, lahko zapustimo pripomoček PSQL tako, da zaženemo ukaz “\q” ali izhod.

Nato, da preverimo, ali imamo naložene podatke, se lahko znova povežemo z bazo podatkov tako, da izvedemo naslednji ukaz:

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

Nato lahko zaženete osnovne prostorske poizvedbe, da preverite, ali imate shranjene podatke.

Zaključek

V tej vadnici ste se naučili, kako zagnati strežnik PostGIS kot vsebnik Docker in naložiti podatke v bazo podatkov.