Kør PostGIS-serveren som en Docker-container

Kor Postgis Serveren Som En Docker Container



Der er ingen tvivl om, at Docker er blevet et af de mest udbredte udviklerværktøjer i de senere år. Docker giver os mulighed for at udvikle, pakke, sende og køre applikationerne i isolerede miljøer, der indeholder alle de afhængigheder, der kræves for at køre applikationen.

PostGIS er en udvidelse af PostgreSQL-databasen, der tilføjer understøttelse af geografiske dataobjekter. Dette giver os mulighed for at bruge PostgreSQL-databasen til at gemme og forespørge om geografiske data. Som du kan gætte, giver kombinationen af ​​PostGIS og Docker en effektiv og omfattende metode til at administrere rumlige data.

I denne vejledning lærer vi, hvordan vi hurtigt kan konfigurere en PostGIS-instans i en Docker-container. Vi vil også dække nogle Grundlæggende PostGIS og lære, hvordan man indlæser en rumlig data og udfører nogle grundlæggende forespørgsler ved hjælp af containeren.







Krav:

For at følge med i denne tutorial skal du sikre dig, at du har følgende:



  1. Installeret Docker Engine på dit system. Du kan tjekke vores tutorials om, hvordan du installerer Docker på dit målsystem.
  2. Grundlæggende kendskab til PostgreSQL og rumlige data

Med de givne krav opfyldt, kan vi fortsætte med selvstudiet.



Kør PostGIS i Docker

Lad os fortsætte og opsætte PostGIS-beholderen. Vi starter med at trække PostGIS-beholderen fra Docker Hub med følgende kommando:





$ docker pull postgis/postgis

Når vi har downloadet billedet, kan vi køre containeren ved hjælp af billedet som vist i følgende kommando:



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

I den givne kommando angiver vi følgende parametre:

  1. –navn – Dette giver os mulighed for at angive navnet på beholderen.
  2. -e – Dette giver os mulighed for at indstille PostgreSQL-adgangskoden som en miljøvariabel. Dette er adgangskoden, der bruges til postgres-brugeren.
  3. -d – Dette fortæller Docker at køre containeren i baggrunden eller løsrevet tilstand.
  4. -p 5432:5432 – Dette giver os mulighed for at kortlægge port 5432 inde i containeren til værten på port 5432.

For at bekræfte, at containeren kører, skal du bruge følgende kommando:

$ docker ps

Du bør se PostGIS-beholderen på listen.

Indlæs de rumlige data i PostGIS

Nu hvor vi har PostGIS-containeren kørende, kan vi indlæse de rumlige data ved hjælp af forskellige værktøjer og formater såsom GeoJSON, CSV osv.

I dette tilfælde bruger vi en Shapefil som vist i følgende kommandoer:

$ 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_countries.zip

I de givne kommandoer starter vi med at oprette en mappe til at gemme de data, som vi ønsker at indlæse. Vi downloader derefter en geodata fra det angivne link og udtrækker det til biblioteket.

Det næste trin er at indlæse dataene i databasen. Vi starter med at oprette forbindelse til PostgreSQL-databasen ved hjælp af følgende kommando:

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

Hvis du bliver bedt om en adgangskode, skal du angive den adgangskode, du konfigurerede, da du kørte containeren. Dette skulle autentificere dig og slippe dig ind i PostgreSQL-skallen.

Når vi først er forbundet til databasen, kan vi bruge 'shp2pgsql'-værktøjet til at importere dataene fra de Shapefiler, som vi udpakkede i de foregående trin.

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

I den forrige kommando bruger vi muligheden -I til at oprette et rumligt indeks for en hurtigere forespørgsel efter de geografiske data. Vi angiver også koordinatsystemet som 4326 ved hjælp af parameteren -s. EPSG:4326 er standard koordinattilstandssystem for WGS 84.

PostGIS-forespørgselsdata

Når vi har indlæst dataene, kan vi afslutte PSQL-værktøjet ved at køre kommandoen '\q' eller afslutte.

For at bekræfte, at vi har dataene indlæst, kan vi genoprette forbindelse til databasen ved at køre følgende kommando:

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

Dernæst kan du køre de grundlæggende rumlige forespørgsler for at bekræfte, at du har gemt dataene.

Konklusion

I denne tutorial lærte du, hvordan du kører PostGIS-serveren som en Docker-container og indlæser dataene i databasen.