Kjør PostGIS Server som en Docker Container

Kjor Postgis Server Som En Docker Container



Det er ingen tvil om at Docker har blitt et av de mest brukte utviklerverktøyene de siste årene. Docker lar oss utvikle, pakke, sende og kjøre applikasjonene i isolerte miljøer som inneholder alle avhengighetene som kreves for å kjøre applikasjonen.

PostGIS er en utvidelse av PostgreSQL-databasen som legger til støtte for geografiske dataobjekter. Dette lar oss bruke PostgreSQL-databasen til å lagre og spørre etter romlige data. Som du kan gjette, gir kombinasjonen av PostGIS og Docker en effektiv og omfattende metode for å administrere romlige data.

I denne opplæringen lærer vi hvordan vi raskt kan sette opp en PostGIS-forekomst i en Docker-beholder. Vi vil også dekke noe grunnleggende om PostGIS og lære hvordan du laster inn romlige data og utfører noen grunnleggende spørringer ved å bruke containeren.







Krav:

For å følge med på denne opplæringen, sørg for at du har følgende:



  1. Installert Docker Engine på systemet ditt. Du kan sjekke veiledningene våre om hvordan du installerer Docker på målsystemet ditt.
  2. Grunnleggende kunnskap om PostgreSQL og romlige data

Med de gitte kravene oppfylt, kan vi fortsette med opplæringen.



Kjør PostGIS i Docker

La oss fortsette og sette opp PostGIS-beholderen. Vi starter med å trekke PostGIS-beholderen fra Docker Hub med følgende kommando:





$ docker pull postgis/postgis

Når vi har lastet ned bildet, kan vi kjøre beholderen ved å bruke bildet som vist i følgende kommando:



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

I den gitte kommandoen spesifiserer vi følgende parametere:

  1. –navn – Dette lar oss spesifisere navnet på beholderen.
  2. -e – Dette lar oss sette PostgreSQL-passordet som en miljøvariabel. Dette er passordet som brukes for postgres-brukeren.
  3. -d – Dette forteller Docker å kjøre beholderen i bakgrunnen eller frakoblet modus.
  4. -p 5432:5432 – Dette lar oss kartlegge port 5432 inne i containeren til verten på port 5432.

For å bekrefte at beholderen kjører, bruk følgende kommando:

$ docker ps

Du bør se PostGIS-beholderen oppført.

Last inn romlige data i PostGIS

Nå som vi har PostGIS-beholderen i gang, kan vi laste inn romlige data ved hjelp av ulike verktøy og formater som GeoJSON, CSV, etc.

For dette tilfellet bruker 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 gitte kommandoene starter vi med å lage en katalog for å lagre dataene vi ønsker å laste. Vi laster deretter ned en geodata fra den angitte lenken og trekker den ut i katalogen.

Det neste trinnet er å laste dataene inn i databasen. Vi starter med å koble til PostgreSQL-databasen ved å bruke følgende kommando:

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

Hvis du blir bedt om et passord, oppgi passordet du konfigurerte da du kjørte beholderen. Dette bør autentisere deg og slippe deg inn i PostgreSQL-skallet.

Når vi er koblet til databasen, kan vi bruke 'shp2pgsql'-verktøyet til å importere dataene fra Shapefilene som vi hentet ut i de forrige trinnene.

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

I den forrige kommandoen bruker vi alternativet -I for å lage en romlig indeks for en raskere spørring av de romlige dataene. Vi spesifiserer også koordinatsystemet som 4326 ved å bruke parameteren -s. EPSG:4326 er standard koordinattilstandssystem for WGS 84.

PostGIS Query Data

Når vi har lastet inn dataene, kan vi avslutte PSQL-verktøyet ved å kjøre kommandoen '\q' eller avslutte.

Deretter, for å bekrefte at vi har dataene lastet, kan vi koble til databasen på nytt ved å kjøre følgende kommando:

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

Deretter kan du kjøre de grunnleggende romlige spørringene for å bekrefte at du har lagret dataene.

Konklusjon

I denne opplæringen lærte du hvordan du kjører PostGIS-serveren som en Docker-beholder og laster dataene inn i databasen.