Patakbuhin ang PostGIS Server bilang isang Docker Container

Patakbuhin Ang Postgis Server Bilang Isang Docker Container



Walang alinlangan na ang Docker ay naging isa sa pinakamalawak na ginagamit na tool ng developer sa mga nakaraang taon. Nagbibigay-daan sa amin ang Docker na bumuo, mag-package, magpadala, at magpatakbo ng mga application sa mga nakahiwalay na kapaligiran na naglalaman ng lahat ng mga dependency na kinakailangan upang patakbuhin ang application.

Ang PostGIS ay isang extension ng database ng PostgreSQL na nagdaragdag ng suporta para sa mga geographic na data object. Nagbibigay-daan ito sa amin na gamitin ang database ng PostgreSQL upang mag-imbak at mag-query ng spatial na data. Tulad ng maaari mong hulaan, ang pagsasama-sama ng PostGIS at Docker ay nagbibigay ng isang mahusay at malawak na paraan ng pamamahala ng isang spatial na data.

Sa tutorial na ito, malalaman natin kung paano tayo makakapag-set up ng isang PostGIS instance sa loob ng isang Docker container. Sasaklawin din namin ang ilang pangunahing kaalaman sa PostGIS at matutunan kung paano mag-load ng spatial na data at magsagawa ng ilang pangunahing query gamit ang container.







Mga kinakailangan:

Upang masundan ang tutorial na ito, tiyaking mayroon kang sumusunod:



  1. Naka-install na Docker Engine sa iyong system. Maaari mong suriin ang aming mga tutorial kung paano i-install ang Docker sa iyong target na system.
  2. Pangunahing kaalaman sa PostgreSQL at spatial na data

Sa ibinigay na mga kinakailangan, maaari tayong magpatuloy sa tutorial.



Patakbuhin ang PostGIS sa Docker

Ipagpatuloy natin at i-setup ang PostGIS container. Nagsisimula kami sa pamamagitan ng paghila sa lalagyan ng PostGIS mula sa Docker Hub gamit ang sumusunod na utos:





$ docker pull postgis/postgis

Kapag na-download na namin ang imahe, maaari naming patakbuhin ang lalagyan gamit ang imahe tulad ng ipinapakita sa sumusunod na command:



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

Sa ibinigay na utos, tinukoy namin ang mga sumusunod na parameter:

  1. –pangalan – Nagbibigay-daan ito sa amin na tukuyin ang pangalan ng lalagyan.
  2. -e – Ito ay nagpapahintulot sa amin na itakda ang PostgreSQL password bilang isang variable ng kapaligiran. Ito ang password na ginagamit para sa postgres user.
  3. -d - Sinasabi nito sa Docker na patakbuhin ang lalagyan sa background o detached mode.
  4. -p 5432:5432 – Nagbibigay-daan ito sa amin na imapa ang port 5432 sa loob ng container patungo sa host sa port 5432.

Upang i-verify na tumatakbo ang container, gamitin ang sumusunod na command:

$ docker ps

Dapat mong makita ang PostGIS container na nakalista.

I-load ang Spatial Data sa PostGIS

Ngayon na mayroon na kaming PostGIS container na tumatakbo, maaari naming i-load ang spatial na data gamit ang iba't ibang mga tool at format tulad ng GeoJSON, CSV, atbp.

Para sa kasong ito, gumagamit kami ng Shapefile tulad ng ipinapakita sa mga sumusunod na command:

$ 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

Sa ibinigay na mga utos, nagsisimula kami sa pamamagitan ng paglikha ng isang direktoryo upang mag-imbak ng data na nais naming i-load. Pagkatapos ay nag-download kami ng geo data mula sa tinukoy na link at i-extract ito sa direktoryo.

Ang susunod na hakbang ay i-load ang data sa database. Magsisimula kami sa pamamagitan ng pagkonekta sa database ng PostgreSQL gamit ang sumusunod na command:

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

Kung sinenyasan para sa isang password, ibigay ang password na iyong na-configure noong pinapatakbo ang container. Ito ay dapat magpatotoo sa iyo at ihulog ka sa PostgreSQL shell.

Kapag nakakonekta na sa database, maaari naming gamitin ang 'shp2pgsql' na utility para i-import ang data mula sa Shapefiles na kinuha namin sa mga nakaraang hakbang.

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

Sa nakaraang command, ginagamit namin ang -I na opsyon upang lumikha ng spatial index para sa mas mabilis na pag-query ng spatial data. Tinukoy din namin ang coordinate system bilang 4326 gamit ang -s parameter. Ang EPSG:4326 ay ang karaniwang coordinate state system para sa WGS 84.

Data ng Query sa PostGIS

Kapag na-load na namin ang data, maaari kaming lumabas sa PSQL utility sa pamamagitan ng pagpapatakbo ng “\q” command o exit.

Susunod, upang i-verify na na-load na namin ang data, maaari kaming muling kumonekta sa database sa pamamagitan ng pagpapatakbo ng sumusunod na command:

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

Susunod, maaari mong patakbuhin ang mga pangunahing spatial na query upang i-verify na mayroon kang data na nakaimbak.

Konklusyon

Sa tutorial na ito, natutunan mo kung paano patakbuhin ang PostGIS server bilang isang lalagyan ng Docker at i-load ang data sa database.