Esegui il server PostGIS come contenitore Docker

Esegui Il Server Postgis Come Contenitore Docker



Non c’è dubbio che Docker sia diventato uno degli strumenti di sviluppo più utilizzati negli ultimi anni. Docker ci consente di sviluppare, confezionare, spedire ed eseguire le applicazioni in ambienti isolati che contengono tutte le dipendenze necessarie per eseguire l'applicazione.

PostGIS è un'estensione del database PostgreSQL che aggiunge il supporto per oggetti di dati geografici. Ciò ci consente di utilizzare il database PostgreSQL per archiviare ed interrogare dati spaziali. Come puoi immaginare, la combinazione di PostGIS e Docker fornisce un metodo efficiente ed esteso per gestire i dati spaziali.

In questo tutorial impareremo come configurare rapidamente un'istanza PostGIS all'interno di un contenitore Docker. Tratteremo anche alcune nozioni di base su PostGIS e impareremo come caricare dati spaziali ed eseguire alcune query di base utilizzando il contenitore.







Requisiti:

Per seguire questo tutorial, assicurati di avere quanto segue:



  1. Docker Engine installato sul tuo sistema. Puoi controllare i nostri tutorial su come installare Docker sul tuo sistema di destinazione.
  2. Conoscenza di base di PostgreSQL e dei dati spaziali

Soddisfatti i requisiti indicati, possiamo procedere con il tutorial.



Esegui PostGIS in Docker

Procediamo e configuriamo il contenitore PostGIS. Iniziamo estraendo il contenitore PostGIS dal Docker Hub con il seguente comando:





$ docker pull postgis/postgis

Una volta scaricata l'immagine, possiamo eseguire il contenitore utilizzando l'immagine come mostrato nel seguente comando:



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

Nel comando dato specifichiamo i seguenti parametri:

  1. –name – Questo ci permette di specificare il nome del contenitore.
  2. -e – Questo ci consente di impostare la password PostgreSQL come variabile di ambiente. Questa è la password utilizzata per l'utente postgres.
  3. -d – Questo indica a Docker di eseguire il contenitore in background o in modalità distaccata.
  4. -p 5432:5432 – Questo ci consente di mappare la porta 5432 all'interno del contenitore sull'host sulla porta 5432.

Per verificare che il contenitore sia in esecuzione, utilizzare il comando seguente:

$docker ps

Dovresti vedere il contenitore PostGIS elencato.

Carica i dati spaziali in PostGIS

Ora che abbiamo il contenitore PostGIS in esecuzione, possiamo caricare i dati spaziali utilizzando vari strumenti e formati come GeoJSON, CSV, ecc.

In questo caso, utilizziamo uno Shapefile come mostrato nei seguenti comandi:

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

Nei comandi forniti, iniziamo creando una directory in cui archiviare i dati che desideriamo caricare. Scarichiamo quindi i dati geografici dal collegamento specificato e li estraiamo nella directory.

Il passo successivo è caricare i dati nel database. Iniziamo connettendoci al database PostgreSQL utilizzando il seguente comando:

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

Se viene richiesta una password, fornire la password configurata durante l'esecuzione del contenitore. Questo dovrebbe autenticarti e farti entrare nella shell PostgreSQL.

Una volta connessi al database, possiamo utilizzare l'utility “shp2pgsql” per importare i dati dagli Shapefile che abbiamo estratto nei passaggi precedenti.

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

Nel comando precedente, utilizziamo l'opzione -I per creare un indice spaziale per un'interrogazione più rapida dei dati spaziali. Specifichiamo anche il sistema di coordinate come 4326 utilizzando il parametro -s. EPSG:4326 è il sistema di stati di coordinate standard per WGS 84.

Dati delle query PostGIS

Una volta caricati i dati, possiamo uscire dall'utilità PSQL eseguendo il comando '\q' o uscire.

Successivamente, per verificare di aver caricato i dati, possiamo riconnetterci al database eseguendo il seguente comando:

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

Successivamente, puoi eseguire le query spaziali di base per verificare di avere i dati archiviati.

Conclusione

In questo tutorial hai imparato come eseguire il server PostGIS come contenitore Docker e caricare i dati nel database.