Voer de PostGIS-server uit als een Docker-container

Voer De Postgis Server Uit Als Een Docker Container



Het lijdt geen twijfel dat Docker de afgelopen jaren een van de meest gebruikte ontwikkelaarstools is geworden. Met Docker kunnen we de applicaties ontwikkelen, verpakken, verzenden en uitvoeren in geïsoleerde omgevingen die alle afhankelijkheden bevatten die nodig zijn om de applicatie uit te voeren.

PostGIS is een uitbreiding van de PostgreSQL-database die ondersteuning voor geografische gegevensobjecten toevoegt. Hierdoor kunnen we de PostgreSQL-database gebruiken om ruimtelijke gegevens op te slaan en op te vragen. Zoals u kunt raden, biedt de combinatie van PostGIS en Docker een efficiënte en uitgebreide methode voor het beheren van ruimtelijke gegevens.

In deze tutorial leren we hoe we snel een PostGIS-instantie in een Docker-container kunnen opzetten. We behandelen ook enkele basisprincipes van PostGIS en leren hoe u ruimtelijke gegevens laadt en enkele basisquery's uitvoert met behulp van de container.







Vereisten:

Zorg ervoor dat u over het volgende beschikt om deze zelfstudie te volgen:



  1. Docker Engine op uw systeem geïnstalleerd. U kunt onze tutorials raadplegen over hoe u Docker op uw doelsysteem installeert.
  2. Basiskennis van PostgreSQL en ruimtelijke data

Als aan de gegeven vereisten is voldaan, kunnen we doorgaan met de tutorial.



Voer PostGIS uit in Docker

Laten we verder gaan en de PostGIS-container instellen. We beginnen met het ophalen van de PostGIS-container uit de Docker Hub met het volgende commando:





$ docker pull postgis/postgis

Zodra we de afbeelding hebben gedownload, kunnen we de container uitvoeren met behulp van de afbeelding, zoals weergegeven in de volgende opdracht:



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

In het gegeven commando specificeren we de volgende parameters:

  1. –name – Hiermee kunnen we de naam van de container opgeven.
  2. -e – Hiermee kunnen we het PostgreSQL-wachtwoord instellen als een omgevingsvariabele. Dit is het wachtwoord dat wordt gebruikt voor de postgres-gebruiker.
  3. -d – Dit vertelt Docker om de container op de achtergrond of in de vrijstaande modus uit te voeren.
  4. -p 5432:5432 – Hiermee kunnen we poort 5432 in de container toewijzen aan de host op poort 5432.

Gebruik de volgende opdracht om te controleren of de container actief is:

$ docker ps

U zou de PostGIS-container in de lijst moeten zien staan.

Laad de ruimtelijke gegevens in PostGIS

Nu we de PostGIS-container draaien, kunnen we de ruimtelijke gegevens laden met behulp van verschillende tools en formaten zoals GeoJSON, CSV, enz.

Voor dit geval gebruiken we een Shapefile zoals weergegeven in de volgende opdrachten:

$ mkdir -p ~/data
$ cd~/data
wgethttps://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ pak ne_110m_admin_0_countries.zip uit

In de gegeven opdrachten beginnen we met het maken van een map waarin we de gegevens opslaan die we willen laden. Vervolgens downloaden we geogegevens van de opgegeven link en extraheren deze in de map.

De volgende stap is het laden van de gegevens in de database. We beginnen met het verbinden met de PostgreSQL-database met behulp van de volgende opdracht:

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

Als u om een ​​wachtwoord wordt gevraagd, geeft u het wachtwoord op dat u hebt geconfigureerd bij het uitvoeren van de container. Dit zou u moeten authenticeren en u in de PostgreSQL-shell plaatsen.

Eenmaal verbonden met de database, kunnen we het hulpprogramma “shp2pgsql” gebruiken om de gegevens te importeren uit de Shapefiles die we in de vorige stappen hebben geëxtraheerd.

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

In het vorige commando gebruiken we de optie -I om een ​​ruimtelijke index te maken voor een snellere bevraging van de ruimtelijke gegevens. We specificeren het coördinatensysteem ook als 4326 met behulp van de parameter -s. De EPSG:4326 is het standaard coördinatenstatussysteem voor WGS 84.

PostGIS-querygegevens

Nadat we de gegevens hebben geladen, kunnen we het PSQL-hulpprogramma afsluiten door de opdracht '\q' uit te voeren of af te sluiten.

Om vervolgens te verifiëren of de gegevens zijn geladen, kunnen we opnieuw verbinding maken met de database door de volgende opdracht uit te voeren:

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

Vervolgens kunt u de basisruimtelijke query's uitvoeren om te verifiëren dat de gegevens zijn opgeslagen.

Conclusie

In deze tutorial leerde u hoe u de PostGIS-server als een Docker-container kunt gebruiken en de gegevens in de database kunt laden.