Spusťte PostGIS Server jako Docker Container

Spustte Postgis Server Jako Docker Container



Není pochyb o tom, že Docker se v posledních letech stal jedním z nejpoužívanějších vývojářských nástrojů. Docker nám umožňuje vyvíjet, balit, dodávat a spouštět aplikace v izolovaných prostředích, která obsahují všechny závislosti potřebné ke spuštění aplikace.

PostGIS je rozšíření databáze PostgreSQL, které přidává podporu pro geografické datové objekty. To nám umožňuje používat databázi PostgreSQL k ukládání a dotazování prostorových dat. Jak můžete hádat, kombinace PostGIS a Docker poskytuje efektivní a rozsáhlou metodu správy prostorových dat.

V tomto tutoriálu se naučíme, jak můžeme rychle nastavit instanci PostGIS v kontejneru Docker. Probereme také některé základy PostGIS a naučíme se, jak načíst prostorová data a provádět některé základní dotazy pomocí kontejneru.







Požadavky:

Chcete-li pokračovat v tomto tutoriálu, ujistěte se, že máte následující:



  1. Nainstalovaný Docker Engine ve vašem systému. Můžete se podívat na naše návody, jak nainstalovat Docker na váš cílový systém.
  2. Základní znalost PostgreSQL a prostorových dat

Po splnění daných požadavků můžeme pokračovat v tutoriálu.



Spusťte PostGIS v Dockeru

Pokračujme a nastavíme kontejner PostGIS. Začneme vytažením kontejneru PostGIS z Docker Hub pomocí následujícího příkazu:





$ docker pull postgis/postgis

Jakmile máme obrázek stažený, můžeme spustit kontejner pomocí obrázku, jak je znázorněno v následujícím příkazu:



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

V daném příkazu zadáváme následující parametry:

  1. –name – Umožňuje nám zadat název kontejneru.
  2. -e – To nám umožňuje nastavit heslo PostgreSQL jako proměnnou prostředí. Toto je heslo, které se používá pro uživatele postgres.
  3. -d – To říká Dockeru, aby spustil kontejner na pozadí nebo v odděleném režimu.
  4. -p 5432:5432 – To nám umožňuje namapovat port 5432 uvnitř kontejneru na hostitele na portu 5432.

Chcete-li ověřit, že kontejner běží, použijte následující příkaz:

$ docker ps

Měli byste vidět kontejner PostGIS v seznamu.

Načtěte prostorová data v PostGIS

Nyní, když máme spuštěný kontejner PostGIS, můžeme načíst prostorová data pomocí různých nástrojů a formátů, jako je GeoJSON, CSV atd.

V tomto případě použijeme Shapefile, jak je znázorněno v následujících příkazech:

$ 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 příkazech začneme vytvořením adresáře pro uložení dat, která si přejeme načíst. Ze zadaného odkazu pak stáhneme geo data a rozbalíme je do adresáře.

Dalším krokem je načtení dat do databáze. Začneme připojením k databázi PostgreSQL pomocí následujícího příkazu:

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

Pokud budete vyzváni k zadání hesla, zadejte heslo, které jste nakonfigurovali při spuštění kontejneru. To by vás mělo ověřit a umístit do prostředí PostgreSQL.

Po připojení k databázi můžeme použít nástroj „shp2pgsql“ k importu dat ze souborů Shapefiles, které jsme extrahovali v předchozích krocích.

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

V předchozím příkazu používáme volbu -I k vytvoření prostorového indexu pro rychlejší dotazování na prostorová data. Také určíme souřadnicový systém jako 4326 pomocí parametru -s. EPSG:4326 je standardní souřadnicový stavový systém pro WGS 84.

Data dotazů PostGIS

Jakmile načteme data, můžeme ukončit nástroj PSQL spuštěním příkazu „\q“ nebo ukončením.

Dále, abychom si ověřili, že máme načtená data, můžeme se znovu připojit k databázi spuštěním následujícího příkazu:

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

Dále můžete spustit základní prostorové dotazy, abyste si ověřili, že máte uložená data.

Závěr

V tomto tutoriálu jste se naučili, jak spustit server PostGIS jako kontejner Docker a načíst data do databáze.