Palaidiet PostGIS serveri kā Docker konteineru

Palaidiet Postgis Serveri Ka Docker Konteineru



Nav šaubu, ka Docker pēdējos gados ir kļuvis par vienu no visplašāk izmantotajiem izstrādātāju rīkiem. Docker ļauj mums izstrādāt, iepakot, piegādāt un palaist lietojumprogrammas izolētā vidē, kurā ir visas lietojumprogrammas palaišanai nepieciešamās atkarības.

PostGIS ir PostgreSQL datu bāzes paplašinājums, kas papildina ģeogrāfisko datu objektu atbalstu. Tas ļauj mums izmantot PostgreSQL datu bāzi, lai saglabātu un vaicātu telpiskos datus. Kā jau nojaušat, PostGIS un Docker apvienošana nodrošina efektīvu un plašu telpisko datu pārvaldības metodi.

Šajā apmācībā mēs uzzināsim, kā mēs varam ātri iestatīt PostGIS gadījumu Docker konteinerā. Mēs arī apskatīsim dažus PostGIS pamatus un uzzināsim, kā ielādēt telpiskos datus un veikt dažus pamata vaicājumus, izmantojot konteineru.







Prasības:

Lai turpinātu šo apmācību, pārliecinieties, vai jums ir:



  1. Jūsu sistēmā ir instalēts Docker Engine. Varat pārbaudīt mūsu apmācības par to, kā instalēt Docker savā mērķa sistēmā.
  2. Pamatzināšanas par PostgreSQL un telpiskajiem datiem

Ja ir izpildītas norādītās prasības, mēs varam turpināt apmācību.



Palaidiet PostGIS programmā Docker

Turpināsim un iestatīsim PostGIS konteineru. Mēs sākam, izvelkot PostGIS konteineru no Docker Hub ar šādu komandu:





$ docker pull postgis/postgis

Kad attēls ir lejupielādēts, mēs varam palaist konteineru, izmantojot attēlu, kā parādīts šajā komandā:



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

Dotajā komandā mēs norādām šādus parametrus:

  1. –nosaukums – ļauj mums norādīt konteinera nosaukumu.
  2. -e - Tas ļauj mums iestatīt PostgreSQL paroli kā vides mainīgo. Šī ir parole, kas tiek izmantota postgres lietotājam.
  3. -d — tas liek Docker palaist konteineru fonā vai atdalītajā režīmā.
  4. -p 5432:5432 — tas ļauj kartēt 5432. portu konteinerā ar resursdatoru portā 5432.

Lai pārbaudītu, vai konteiners darbojas, izmantojiet šo komandu:

$ docker ps

Jums vajadzētu redzēt sarakstā PostGIS konteineru.

Ielādējiet telpiskos datus programmā PostGIS

Tagad, kad darbojas PostGIS konteiners, mēs varam ielādēt telpiskos datus, izmantojot dažādus rīkus un formātus, piemēram, GeoJSON, CSV utt.

Šajā gadījumā mēs izmantojam Shapefile, kā parādīts šādās komandās:

$ 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

Dotajās komandās mēs sākam, izveidojot direktoriju, kurā saglabāt datus, kurus vēlamies ielādēt. Pēc tam mēs lejupielādējam ģeogrāfiskos datus no norādītās saites un izvelkam tos direktorijā.

Nākamais solis ir datu ielāde datu bāzē. Mēs sākam, izveidojot savienojumu ar PostgreSQL datu bāzi, izmantojot šādu komandu:

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

Ja tiek prasīta parole, norādiet paroli, kuru konfigurējāt, palaižot konteineru. Tam vajadzētu jūs autentificēt un ievietot PostgreSQL čaulā.

Kad ir izveidots savienojums ar datu bāzi, mēs varam izmantot utilītu “shp2pgsql”, lai importētu datus no Shape failiem, kurus ieguvām iepriekšējās darbībās.

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

Iepriekšējā komandā mēs izmantojam opciju -I, lai izveidotu telpisko indeksu ātrākai telpisko datu vaicāšanai. Mēs arī norādām koordinātu sistēmu kā 4326, izmantojot parametru -s. EPSG:4326 ir standarta koordinātu stāvokļa sistēma WGS 84.

PostGIS vaicājuma dati

Kad dati ir ielādēti, mēs varam iziet no PSQL utilīta, palaižot komandu “\q” vai izejot.

Tālāk, lai pārbaudītu, vai dati ir ielādēti, mēs varam atkārtoti izveidot savienojumu ar datu bāzi, izpildot šādu komandu:

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

Pēc tam varat palaist pamata telpiskos vaicājumus, lai pārbaudītu, vai dati ir saglabāti.

Secinājums

Šajā apmācībā jūs uzzinājāt, kā palaist PostGIS serveri kā Docker konteineru un ielādēt datus datu bāzē.